mysql主從不同步問題分析

PHP中文网
發布: 2018-05-10 17:14:37
原創
2208 人瀏覽過

查看叢庫狀態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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板