mysql gtid 跳過事務 mysql gtid從庫落后跳過落后事務


【1】場景需求

mysql 8.0.22

我從庫落后主庫幾萬~幾十萬個事務,大幾萬秒,我不想要了;

已知

(1)落后期間只有 insert 語句 和 create table 

那我不想等那么久了,不想讓它追了;

【2】嘗試解決

(1)設置 gtid_next=最新主庫gtid

stop slave;
set gtid_next='1b95dc8e-92e5-11ec-bb5b-fa163ec8e3ff:4947003'; 
begin;commit; 
set gtid_next='automatic';
start slave;

  

 

    

 

 

很快發現不對了啊,怎么突然就 executed_gtid_set 從 1-1406920  變成了 1-1408858:4947003 了;

這證明是在追中間部分的 gtid事務啊;

(2)直接 set gtid_purged 試試【解決】

我用  show slave status 來看當前執行的gtid

  

 

然后針對間隙,做 gtid_purged 操作,結果報錯如下:

錯誤3546(hy000):@@global。不能更改GTID_PURGED:添加的gtid集不能與@@全局集重疊。gtid_executed

ERROR 3546 (HY000): @@GLOBAL.GTID_PURGED cannot be changed: the added gtid set must not overlap with @@GLOBAL.GTID_EXECUTED

重疊?好像沒有啊,show slave status 里不是 1-2300352:4947003 嗎?

  我gtid_purged  2300353-4947002 不是正好嗎?

 

結果仔細看了一下錯誤信息,說是不能和變量  @@GLOBAL.GTID_EXECUTED 中的值 重疊,難道 這個全局變量參數和 show slave status 中的 Executed_Gtid_Set 不一致?

查看一下:

  

 

   

 

仔細看看我之前的操作:是因為使用的是 stop slave 之前的值,怪不得有重疊;

  

 

所以一定要 stop slave 之后,再show slave status啊;查看的 Executed_gtid_set 就一定是准的了

再次 set global gtid_purged=........  成功,如下圖:

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM