dba+開源工具:自動修復MySQL主從同步復制的報錯數據
pt-slave-repair工具簡介
MySQL主從復制作為一種常見的數據同步方式,有時候會出現同步錯誤導致同步中斷的情況。手動修復這些同步錯誤通常需要耗費不少時間和精力,并且對于不熟悉MySQL復制的人來說比較困難。
pt-slave-repair是對原有pt-slave-restart工具的補充,它提供自動修復MySQL主從同步復制的報錯數據,以及恢復中斷的sql thread復制線程。
自動修復主從同步數據工具具有以下幾個優勢:
- 提高效率:能夠快速檢測和修復主從同步錯誤,無需手動干預。這大大節省了DBA的時間和精力,使他們能夠更專注于其他重要的任務。
- 減少人為錯誤:手動修復同步錯誤可能存在人為錯誤的風險,例如配置錯誤或操作失誤。自動修復工具可以提供一致性和準確性的修復策略,減少了人為錯誤的可能性。
- 實時監控和響應:具有實時監控功能,可以及時檢測同步錯誤的發生,并立即采取相應的修復措施。這有助于及時恢復同步并減少數據延遲。
- 自動化運維:可以定期檢查主從同步狀態并執行修復操作,無需人工干預。這減少了對人工操作和監控的依賴,提高了系統的可靠性和穩定性。
- 快速故障恢復:當主從同步錯誤發生時,自動修復工具能夠迅速識別和修復問題,從而減少數據丟失和業務中斷的時間。這有助于提高系統的可用性和數據的一致性。
總的來說,自動修復主從同步數據工具能夠提高效率、降低風險、實時監控和響應、自動化運維以及快速故障恢復,可以極大地提升同步運行的穩定性和可靠性。
原理
- 當檢測到同步報錯1062(主鍵沖突、重復)和1032(數據丟失)時,首先要進行binlog環境檢查,如果binlog_format不等于ROW并且binlog_row_image不等于FULL,則退出主程序。如果錯誤號非1062或1032,則直接退出主程序;
- 獲取show slave status信息,得到binlog、position、gtid信息;
- 連接到主庫上解析binlog,如果是DELETE刪除語句,則直接跳過;
- 關閉slave_parallel_workers多線程并行復制;
- 如果開啟GITD復制模式,啟用SET gtid_next方式;如果開啟位置點復制模式,啟動SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1方式);
- 如果是UPDATE/INSERT語句,則把BINLOG解析為具體的SQL,并且反轉SQL,將其轉換為REPLACE INTO;
- 將解析后的REPLACE INTO語句反向插入slave上,使其數據保持一致,然后執行第5步操作;
- 將slave設置為read_only只讀模式;
- 以此類推,最終使其show slave status同步為雙YES(同步正常)。
使用
shell> chmod 755 pt-slave-repair
1、前臺運行
shell> ./pt-slave-repair -H 192.168.198.239 -P 3346 -u admin -p hechunyang -d test
注:你可以按<ctrl+c>或者<ctrl+z>退出程序。
2、后臺運行
shell> nohup ./pt-slave-repair -H 192.168.198.239 -P 3346 -u admin -p hechunyang -d test > /dev/null &
注:你可以
shell> pkill pt-slave-repair
退出后臺進程。
說明
-e, --enable-binlog Enable binary logging of the restore data
1、-e 選項,默認修復完的數據不會記錄在binlog文件里,如果你的slave是二級從庫(后面還接著一個slave),那么開啟這個選項。
2、開啟后臺守護進程后,會自動在當前目錄下創建一個log目錄和{db_name}_INFO.log文件,該文件保存著日志信息。
圖片
圖片
注:支持MySQL 5.7/8.0和MariaDB數據庫,工具適用于Centos7 系統。
下載方式
此工具現通過dbaplus社群免費為大家提供下載使用。若使用過程中有任何問題或建議,可隨時與我們聯系,歡迎大家試用。
登錄以下鏈接即可下載:https://github.com/hcymysql/pt-slave-repair
更多開源工具&腳本下載
圖片
工具研發者介紹
賀春旸,dbaplus社群金牌專家,凡普金科和愛錢進DBA團隊負責人,《MySQL管理之道:性能調優、高可用與監控》第一&二版、《MySQL運維進階指南》作者,曾任職于中國移動飛信、安卓機鋒網。五次榮獲dbaplus年度MVP,致力于MariaDB、MongoDB等開源技術的研究,主要負責數據庫性能調優、監控和架構設計。
工具下載:https://github.com/hcymysql/pt-slave-repair