1. 程式人生 > >一種粗暴快速的解決mysql主從不同步錯誤的思路

一種粗暴快速的解決mysql主從不同步錯誤的思路

通過 大量 word mysql 影響 簡單 posit code change

mysql主從經常會出現主從數據不同步的問題,臟數據會造成主從同步中斷, 出現大量ERROR,如1032,1062等錯誤。常規方法是逐條刪除臟數據或者 重做庫,由於數據量大操作麻煩,而且主庫在線上運行不能有鎖表操作, 各種不便特別費時間。筆者在生產環境遭遇了一次,情急之下用粗暴的方法 不到10分種解決問題。下面假設一種情況,主庫正常,從庫數據不一致, 解決思路步驟如下: 1 ,對故障定性,通過查看最近日誌來找出蛛絲馬跡。一般都用mysqlbinlog /var/lib/myql/mysqld-bin.00000222 | tail | more ,或者登陸數據庫 show binlog events in mysql-bin.00000222 (這個方法沒試過哦)按照這種 方法提取有效的時間節點,這個節點保證數據是一致的,怎麽保證 就看你的經驗,一般自己維護的數據庫心裏有數。 2,按照這個時間節點 找到binlog日誌的位置,並根據日誌找到position,這裏 假設為10086. 3, 故障如果在從庫上stop slave,然後restet slave all,change master to master_host = ‘master ip ‘master_user = ‘rep‘, master_port= 3306, master_password=‘1234p6‘, master_log_file = ‘mysql-bin.00000222‘ master_log_pos=10086; 然後start slave。這個時候你會發現主從同步 報錯,常見的錯誤代碼1032,1062.這個時候你修改從庫my.cnf, 粗暴的忽略這些錯誤。slave-skip-errors=1062,1053,1146 #跳過指定 error no類型的錯誤#slave-skip-errors=all #跳過所有錯誤,這裏不 推薦忽略所有錯誤. 有個比較好的方法把所有錯誤重現一遍,你心裏會有底是什麽原因導致的 錯誤,知道了錯誤的原因就了解了數據庫是為什麽報錯,這樣才有利於根 本解決問題。忽略所有的錯誤,重啟數據庫實例。註意主庫不要做操作, 因為線上業務在跑呢, 不要影響線上業務。主庫好好的,運維就有時間 慢慢解決問題。 重啟後重新stop,reset,change master,然後start slave,如果不報錯,恭喜你 問題解決。確認的方法很簡單,查看最近很可能出錯的數據count,如果 一致說明同步沒問題。

一種粗暴快速的解決mysql主從不同步錯誤的思路