Mysql開啓GTID後遇到錯誤跳過方法

處理方法以下:session

一:跳過錯誤ui

  這個GTID_NEXT的4,是在master 上正常執行的最大id + 1,即Executed_Gtid_Set裏面master uuid執行過的最大值 3+ 1spa

STOP SLAVE ; #首先中止gtid複製
SET @@SESSION.GTID_NEXT= '8f9e146f-0a18-11e7-810a-0050568833c8:4' ; 設置當前下一個執行的事務Id
BEGIN; COMMIT; # 設置空事務,直接提交
SET @@session.gtid_next=automatic;; #恢復下一個事務號 
START SLAVE; # 繼續開啓事務

二,重置master跳過錯誤code

手工調整SLAVE已清除的GTID列表GTID_PURGED,人爲通知SLAVE哪些事務已經被清除了,後續能夠忽略:
blog

STOP SLAVE;
RESET MASTER;
SET @@GLOBAL.GTID_PURGED = '00018601-1111-1111-1111-111111111123:1-2031';
START SLAVE;
#在slave 運行時刻 reset master 命令不被支持
#在GTID環境中,RESET MASTER會清除掉系統變量gtid_purged和gtid_executed的值

 

上面 gtid_next 的值 00018601-1111-1111-1111-111111111123:2030是個會話級變量。事務

  • uuid是 Retrieved_Gtid_Set 的uuid,通常是 Master_UUID 的值,但若是是級聯複製(master -> slavel1 -> slave2),那麼要找到出錯事務最原先在哪執行的
  • trx_id(或叫position)是 master 上正常執行的最大id + 1,即Executed_Gtid_Set裏面master uuid執行過的最大值 2030+ 1
相關文章
相關標籤/搜索