查看叢庫狀態show slave status\G
從庫原文提示:Last_Error: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction '864e6992-0a34-11e7-a98a-7cd30ac6c9ec:148408' at master log mysql-bin.000010, end_log_pos 920578920. See error log/or per_log_posb. this failure or others, if any.
1、 依照叢庫的提示找原因,輸入指令
select * from performance_schema.replication_applier_status_by_worker\G
得到
知道這個交易發生在表r_com_patent 上,定位到表,但是不知道哪一筆記錄。
2、 到主庫找二進位檔案發生了什麼事。輸入指令
Mysqlbinlog --no-defaults –v –v --base64-output=decode-rows /usr/local/mysql/data/master-bin.000010 | grep –A ‘10’ 920578920
終於定位到記錄了。
主庫在表r_com_patent做了更新操作,而叢庫找不到更新的記錄。
具體來說就是,主庫將表r_com_patent中patent_id為45的記錄,字段cid從NULL更改為3253026.而叢庫表r_com_patent中patent_id為45的記錄,字段cid原本為3253026,由於複製機制就必須找叢庫表r_com_patent中patent_id為45且id為NULL的記錄,所以沒找到。 。 。
3、 解決方法
1) 在master檢視中記錄。
Select * from r_com_patent where patent_id = 45;
2) 在slave上,找出更新後的那筆記錄,應該是不存在的。
Select * from r_com_patent where patent_id = 45;
3) 將遺失的資料填滿於Slave或修改。
Insert into r_com_patent values(3253026,45);
4) 在slave跳過錯誤的事務。
Stop slave; Set @@SESSION.GTID_NEXT=’ 864e6992-0a34-11e7-a98a-7cd30ac6c9ec:148408’ Begin; Commit; Set @@SESSION.GTID_NEXT = AUTOMATIC; Start slave;
之後,再檢查一次
Show slave status\G
以上是mysql主從不同步問題分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!