MySQL 主從同步報1236錯誤


MySQL 主從同步報1236錯誤

 

MySQL GTID主從模式下斷鏈出現error 1236錯誤,詳細內容如下:

Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Slave has more GTIDs than the master has, using the master's SERVER_UUID. This may indicate that the end of the binary log was truncated or that the last binary log file was lost, e.g., after a power or disk failure when sync_binlog != 1. The master may or may not have rolled back transactions that were already replica'

 

分析處理

出現此錯誤的原因是Slave的GTID大於Master的GTID,這種問題的出現往往是在Slave執行了DML操作,下面總結兩種修復主從的方式。

方法一

 

在主從的GTID差值很小的情況下可以等待Master的GTID追上Slave之后重新啟動主從,這樣可能導致主從數據不一致,主從恢復后需要手動恢復數據。在小型數據庫數據量很小的情況下可以考慮使用。除了等待Master自己追平GTID之外,也可在Master手動跳過GTID。

#停掉主從,雖然復制現在本身是停止狀態
STOP SLAVE;
#設置需要跳過的GTID
SET @@SESSION.GTID_NEXT='7efd338e-ee5e-11ea-8957-000c29bed658:554472';
#設置空事務
BEGIN; 
COMMIT;
#恢復事物號
SET SESSION GTID_NEXT = AUTOMATIC;
START SLAVE;

 

方法二

 

如果此時的主從GTID值差值很大時,將考慮重新配置主從,這樣可以保證主從數據保持在一直狀態。

 

1、stop slave 停掉主從,雖然復制現在本身是停止狀態

 

2、如果主庫沒有備份的情況下需要鎖表備份數據,應用空閑時間處理。

FLUSH TABLES WITH READ LOCK;

3、檢查主庫binlog號及pos點

 

 

 4、使用mysqldump導出數據庫,並將備份文件轉入主庫服務器。

mysqldump -u root -ppassword --opt -R database_giao > database_giao.sql

 

5、回到主庫解鎖表:UNLOCK TABLES

 

6、登錄到從服務器,恢復需要同步的數據庫

mysql -uroot -p database_giao < database_giao.sql

 

7、登錄從庫mysql,一次執行一下命令即可。

slave stop;

reset slave;

change master to master_host='主機IP',master_user='master',master_password='master',master_log_file='mysql-bin.000001',master_log_pos=123936801;

slave start;
#查看主從
show master status;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM