1. 程式人生 > >MySQL 5.7基於GTID復制的常見問題和修復步驟(一)

MySQL 5.7基於GTID復制的常見問題和修復步驟(一)

恢復 glob chang alt erro ont 分享圖片 部分 修復

【問題一】

復制slave報錯1236,是較為常見的一種報錯

Got fatal error 1236 from master when reading data from binary log: ‘The slave is connecting using CHANGE MASTER TO MASTER_AUTO_POSITION = 1, but the master has purged binary logs containing GTIDs that the slave requires.

需要註意有多種場景都會導致1236錯誤,error code都是1236,但後面的錯誤描述會不同

【產生原因】

這個錯誤發生在slave的IO線程從master拉取日誌時,發現gtid_next在master的binlog.index中第一個文件中不存在。

通常出現在新搭slave , 忘記關閉主庫的binlog備份。

或者slave由於某些原因停止了一段時間,而這段時間master上的binlog被purge掉了,導致從庫獲取不到對應的binlog文件。

【保證數據一致性的修復步驟】

1、到對應的master上查詢當前gtid_purged值,show global variables like ‘%gtid%‘; 並記錄下來

技術分享圖片

Variable_name: gtid_purged

Value: 698da8d5-a743-11e7-a2ab-384c4fb16868:1-245780670,

82634550-10fb-11e6-81fc-384c4fb16868:1-1714684630,

cc85f79f-10ff-11e6-8202-384c4fb16888:1-6127989,

fd1bea9b-5194-11e7-bad5-384c4fb16888:1-1579848406

2、在報錯的slave上執行show global variables like ‘%gtid%‘;並將gtid_executed記錄下來

技術分享圖片

Variable_name: gtid_executed

Value: 698da8d5-a743-11e7-a2ab-384c4fb16868:1-242405257,

82634550-10fb-11e6-81fc-384c4fb16868:1-1714684630,

cc85f79f-10ff-11e6-8202-384c4fb16888:1-6127989,

fd1bea9b-5194-11e7-bad5-384c4fb16888:1-1579848406

3、到binlog備份目錄下找被pugre掉的包含 698da8d5-a743-11e7-a2ab-384c4fb16868:1-242405257的GTID的binlog文件,並從備份目錄拷貝到當前slave服務器上的目錄

4、在當前slave上執行還原腳本,直到還原到大於等於gtid_purged的位置,多還原沒有問題,因為已經執行過的GTID,在salve的SQL線程重做時會跳過

mysqlbinlog -vvv /data/binlog/bin.file |mysql -u -p

如果出現報錯,可以嘗試導出SQL文件source執行

mysqlbinlog -vvv /data/binlog/bin.file > 1059.sql

source 1059.sql

5、start slave;

【不考慮數據一致性的修復步驟】

在某些特殊場景下,比如日誌文件缺失,需要快速恢復,或是測試環境可以丟失一部分數據

1、master上執行show global variables like ‘%gtid_executed‘;並記錄

技術分享圖片

2、slave上一次依次執行,這種方法會丟失掉上次salve報錯時 Executed_Gtid_Set的位置86c67cfe-8b18-11e8-9e4c-246e965710f8:1-16到新位置86c67cfe-8b18-11e8-9e4c-246e965710f8:1-23之間的,16-23集合的事務

stop slave;

reset master;

set global gtid_purged=‘86c67cfe-8b18-11e8-9e4c-246e965710f8:1-23‘;

start slave;

上述方法修復後,都建議用pt-table-checksum工具,檢驗主從數據的一致性。

技術分享圖片

MySQL 5.7基於GTID復制的常見問題和修復步驟(一)