雙中心建設期間,xxx機房內部分mysql備庫出現復制出錯現象,所有出錯信息一致,錯誤信息如下:
具體出錯原因:
從以上信息看,在對表“t_xxx_xxxxx”進行更新操作時,沒找到相應的記錄。
目前所有mysql主從采用4并發、半同步方式進行數據復制,以保證主從數據復制的效率與數據一致性。由本次具體出錯信息看,當時正有4個線程在并發進行數據同步:
線程1:操作“5830d371-600d-11e8-bd61-fa163ef6f4ff:240662”事務
線程2:操作“5830d371-600d-11e8-bd61-fa163ef6f4ff:240659”事務
線程3:操作“5830d371-600d-11e8-bd61-fa163ef6f4ff:240660”事務
線程4:操作“5830d371-600d-11e8-bd61-fa163ef6f4ff:240661”事務
Mysql數據復制是在進行“5830d371-600d-11e8-bd61-fa163ef6f4ff:240662”事務操作時出現了“更新數據時,無法找到相應記錄”錯誤。
1、分析binlog
分析“5830d371-600d-11e8-bd61-fa163ef6f4ff:240662”事務所在binlog:
該事務是個更新”t_xxx_xxxxx”的操作,修改記錄”call_swftno=2018052713390100901288006”
其它三個事務為:
5830d371-600d-11e8-bd61-fa163ef6f4ff:240659
該事務為表“t_xxx_xxxxx”的insertinto on語句,共插入50條記錄,其中包括記錄“call_swftno=2018052713390100901288006”記錄的插入
5830d371-600d-11e8-bd61-fa163ef6f4ff:240660
該事務為表“t_xxx_xxxxx”的insertinto on語句,共插入50條記錄
5830d371-600d-11e8-bd61-fa163ef6f4ff:240661
該事務為表“t_xxx_xxxxxinfo”的更新操作
查看4個事務在主庫上的提交次序
從“last_committed”值可以看出,事務“240659、240660、240661”并發運行,并同時提交,事務“240662”稍后提交。即在主庫上,事務“240659、240660、240661”同時執行,事務“240662”隨后執行。
2、備庫事務運行
從應用邏輯出發,事務“240659”與“240662”是有執行次序的,不能同時執行。但基于mysql主從并發復制機制,并從備庫復制出錯信息看出,事務“240659、240660、240661、240662”在備庫上是并發執行的,最終導致事務“240662”在執行時,由于事務“240659”還沒執行完而找不到記錄“call_swftno=2018052713390100901288006”的錯誤。
3、備庫記錄查詢
在備庫上查詢“240662”事務更改所對應的記錄,發現對應記錄“call_swftno=2018052713390100901288006”存在,說明了事務“240659”在事務“240662”執行出錯后,成功執行完成。
重啟mysql主從復制線程,主從復制恢復正常,繼續進行數據同步。
主庫上短時間內有執行次序的相關操作,在從庫上被基于并發主從復制的機制變更成了并發操作,導致了有依賴操作的事務出現“找不相關記錄”錯誤。
所有機房內mysql主從復制配置都一致,但IDC機房內的數據是由前臺業務系統產生的,具有一定的時間間隔,沒產生這種現象,而淮安機房內的數據是由雙中心同步軟件同步產生的,短時間內產生大量有操作依賴的事務,便產生了上述錯誤現象。
Mysql參數“slave_preserve_commit_order“可以控制Slave上的binlog提交順序和Master上的binlog的提交順序一樣,保證GTID的順序。該參數只能用于開啟了logicalclock并且啟用了binlog的復制。即對于多線程復制,該參數用來保障事務在slave上執行的順序與relaylog中的順序嚴格一致。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/130160.html
摘要:哨兵是社區版本推出的原生高可用解決方案,部署架構主要包括兩部分集群和數據集群,其中集群是由若干節點組成的分布式集群。自研推薦推薦自研的高可用解決方案,主要體現在配置中心故障探測和的處理機制上,通常需要根據企業業務的實際線上環境來定制化。 最近很多朋友向我咨詢關于高可用的方案的優缺點以及如何選擇合適的方案線上使用,剛好最近在給宜人貸,光大銀行做企業內訓的時候也詳細講過,這里我再整理發出來...
摘要:哨兵是社區版本推出的原生高可用解決方案,部署架構主要包括兩部分集群和數據集群,其中集群是由若干節點組成的分布式集群。自研推薦推薦自研的高可用解決方案,主要體現在配置中心故障探測和的處理機制上,通常需要根據企業業務的實際線上環境來定制化。 最近很多朋友向我咨詢關于高可用的方案的優缺點以及如何選擇合適的方案線上使用,剛好最近在給宜人貸,光大銀行做企業內訓的時候也詳細講過,這里我再整理發出來...
摘要:編輯器編輯器背景編輯器前段時間遇到一個線上問題,后來排查好久發現是因為主從同步延遲導致的,所以今天寫一篇文章總結一下這個問題希望對你有用。編輯器幾句嘮叨編輯器大家好,我是小飯,一枚后端工程師。背景前段時間遇到一個線上問題,后來排查好久發現是因為主從同步延遲導致的,所以今天寫一篇文章總結一下這個問題希望對你有用。如果覺得還不錯,記得加個關注點個贊哦思維導圖思維導圖常見的主從架構隨著日益增長的訪...
閱讀 1346·2023-01-11 13:20
閱讀 1684·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1858·2023-01-11 13:20
閱讀 4100·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3597·2023-01-11 13:20