溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL 中怎么忽略binlog事件

發(fā)布時間:2021-07-24 16:22:38 來源:億速云 閱讀:144 作者:Leah 欄目:數(shù)據(jù)庫

這期內(nèi)容當中小編將會給大家?guī)碛嘘PMySQL 中怎么忽略binlog事件,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

  1、未啟用GTID模式時

  只需通過設定 SQL_SLAVE_SKIP_COUNTER 的值,即可忽略一些復制事件。例如:

  #需要先關閉SLAVE服務

  root@imysql.com [test]> STOP SLAVE;

  #忽略N個事件(event),通常一個SQL是一個事件

  root@imysql.com [test]> SET SQL_SLAVE_SKIP_COUNTER=N;

  #再次啟動SLAVE服務

  root@imysql.com [test]> START SLAVE;

  2、啟用GTID模式時

  啟用GTID,想要忽略某些錯誤事件就稍微麻煩一點點了。

  首先,我們需要先查看當前SLAVE復制的進度:

  mysql> SHOW SLAVE STATUS\G從中看到,當前SLAVE復制的GTID進展是:

  Slave_IO_Running: Yes

  Slave_SQL_Running: No

  Last_Errno: 1062

  Last_Error: …Duplicate…key ‘PRIMARY’, Error_code: 1062;…

  Master_UUID: f2b6c829-9c87-11e4-84e8-deadeb54b599

  Retrieved_Gtid_Set: 3a16ef7a-75f5-11e4-8960-deadeb54b599:1-283,f2b6c829-9c87-11e4-84e8-deadeb54b599:1-33

  Executed_Gtid_Set: 3a16ef7a-75f5-11e4-8960-deadeb54b599:1-283,f2b6c829-9c87-11e4-84e8-deadeb54b599:1-31

  Auto_Position: 1從上面的信息可以看到,當前從MASTER取到了1-33的事務列表,并且已執(zhí)行(看Executed_Gtid_Set)到了31這個事務GTID位置,在這下一個位置(32)上發(fā)生錯誤。

  這時候,我們需要手工調(diào)整SLAVE已清除的GTID列表 GTID_PURGED,人為通知SLAVE哪些事務已經(jīng)被清除了,后續(xù)可以忽略:

  root@imysql.com [test]> STOP SLAVE;

  root@imysql.com [test]> RESET MASTER;

  root@imysql.com [test]> SET @@GLOBAL.GTID_PURGED = “3a16ef7a-75f5-11e4-8960-deadeb54b599:1-283,f2b6c829-9c87-11e4-84e8-deadeb54b599:1-32”;

  root@imysql.com [test]> START SLAVE;上面這些命令的用意是,忽略 f2b6c829-9c87-11e4-84e8-deadeb54b599:32 這個GTID事務,下一次事務接著從 33 這個GTID開始,即可跳過上述錯誤。

  3、無論是否啟用GTID,使用pt-slave-restart工具

  首先不得不說,percona toolkit工具集對DBA而言實在太方便了。pt-slave-restart工具的作用是監(jiān)視某些特定的復制錯誤,然后忽略,并且再次啟動SLAVE進程(Watch and restart MySQL replication after errors)。

  簡單用法示例:

  #忽略所有1062錯誤,并再次啟動SLAVE進程

  [yejr@imysql.com ]# pt-slave-resetart -S./mysql.sock —error-numbers=1062

  #檢查到錯誤信息只要包含 test.yejr,就一概忽略,并再次啟動 SLAVE 進程

  [yejr@imysql.com ]# pt-slave-resetart -S./mysql.sock —error-text=”test.yejr”綜上,我們雖然可以利用工具來快速忽略復制錯誤,但還是要掌握如何人為忽略復制錯誤的方法,在沒有工具的時候也能了然于胸。

上述就是小編為大家分享的MySQL 中怎么忽略binlog事件了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI