共計 1799 個字符,預計需要花費 5 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這期內容當中丸趣 TV 小編將會給大家帶來有關 MySQL 中怎么忽略 binlog 事件,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
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 的事務列表,并且已執行 (看 Executed_Gtid_Set) 到了 31 這個事務 GTID 位置,在這下一個位置 (32) 上發生錯誤。
這時候,我們需要手工調整 SLAVE 已清除的 GTID 列表 GTID_PURGED,人為通知 SLAVE 哪些事務已經被清除了,后續可以忽略:
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 工具的作用是監視某些特定的復制錯誤,然后忽略,并且再次啟動 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”綜上,我們雖然可以利用工具來快速忽略復制錯誤,但還是要掌握如何人為忽略復制錯誤的方法,在沒有工具的時候也能了然于胸。
上述就是丸趣 TV 小編為大家分享的 MySQL 中怎么忽略 binlog 事件了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注丸趣 TV 行業資訊頻道。
向 AI 問一下細節