[MySQL] 數據庫複製異常恢復之Error_code: 1236

環境:兩臺服務器雙機備份,數據庫採用主主複製
說明:以下主機指HA集羣的主機
報錯:Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from position > file size'
恢復:將備機數據庫複製位置恢復到主機mysql-bin.xxxxxx的最大位置(比報錯中的位置小)

假設HA Server爲node1和node2,數據庫異常的服務器是node2,報錯如下:

Last_IO_Errno: 1236
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from position > file size'

1、查看MySQL錯誤日誌
查看mysql error日誌,首先找一下mysql error 日誌的位置
mysql> show variables like 'log_error';
查看mysql error日誌,搜索記錄的報錯
2017-05-12T01:13:44.574768Z 2 [ERROR] Slave I/O for channel '': Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from position > file size', Error_code: 1236
2017-05-12T01:13:44.574785Z 2 [Note] Slave I/O thread exiting for channel '', read up to log 'mysql-bin.000011', position 245338990

2.2 找到需要恢復的位置
查看node1的mysql-bin.000011,查看方法:使用mysqlbinlog命令
# ./mysqlbinlog ~/somedir/mysql-bin.000011 > 1.txt
# vi 1.txt
……
# at 245141048
#170512  9:07:27 server id 1  end_log_pos 245141079 CRC32 0x41910c65    Xid = 149441519
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
在文件的最後找到了這個數245141048,是小於錯誤發生位置245338990的最大整數

3、恢復備機數據庫
在node2的數據庫執行如下操作
mysql> stop slave;
mysql> change master to master_log_file='mysql-bin.000011',master_log_pos=245141048;
mysql> start slave;
再查看node2數據庫狀態,恢復正常。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章