溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql主從復制跳過復制錯誤

發布時間:2020-07-07 01:39:14 來源:網絡 閱讀:14743 作者:arthur376 欄目:MySQL數據庫

跳過復制錯誤

mysql因為binlog機制問題,有些時候會出現從庫重放sql執行失敗的情況,特別是舊的STATEMENT模式最容易出現這種情況(因為函數和存儲過程等原因),這也是為什么強調使用mixed和row模式的原因。另外就是一些外部XA事務,因為XA事務日志不在mysql中,有時候會出現回滾失敗的情況,導致主從報錯。

出現這些狀況那該怎么辦好呢?如果是重做,雖然是可以,但是如果庫非常大,那耗時就不是一兩小時那么容易,如果是做了生產讀寫分離的,就不好交代了。這個時候我們可以選擇手動修改數據,然后跳過這個復制錯誤,然后這個主從復制就會重新運行了。

繼續講述兩種模式,先說的是GTID模式,他可以有兩種方式跳過。第一種是用得比較多的,注入空事務跳過:

#找到沖突的GTID號.
mysql>show slave status\G
    。
    。
    。
Executed_Gtid_Set: 09cb91bf-2669-11e7-8b70-00163e0835ff:1-83648451
    。
    。
    。
#停止復制
mysql>stop slave;
#然后執行設置一個事務GTID來跳過,因為我們就是卡在這里,所以要跳過83648451這個事務的意思
mysql>SET gtid_next = '09cb91bf-2669-11e7-8b70-00163e0835ff:83648451';
#注入空事務
mysql>BEGIN;COMMIT;
#把GTID設置回自動模式
mysql>SET gtid_next = 'AUTOMATIC';
#重新開啟復制
mysql>START SLAVE;
#這就可以跳過一個事務了,原理在于通過執行一個空事務代替master傳遞過來的沖突事務.
#當然跳過了,并不代表這個數據就不修改了,還是要你手動去修改一下,這樣就一切回歸正常了
mysql>update tables set 。。。。。。。

第二種,直接跳過這個GTID,改做后面的

#找到沖突的GTID號.
mysql>show slave status\G
    。
    。
    。
Executed_Gtid_Set: 09cb91bf-2669-11e7-8b70-00163e0835ff:1-83648451
    。
    。
    。
#停止復制
mysql>stop slave;
#直接設置上面的GTID值+1
mysql>SET @@GLOBAL.GTID_PURGED='09cb91bf-2669-11e7-8b70-00163e0835ff:1-83648452';
#重新開啟復制
mysql>START SLAVE;
#當然跳過了,并不代表這個數據就不修改了,還是要你手動去修改一下,這樣就一切回歸正常了
mysql>update tables set 。。。。。。。

然后就說傳統模式了,相對來說,更簡單一些

#停止復制
mysql>slave stop;
#設定跳過一個事務
mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1
#重新開啟復制
mysql>slave start
#這樣就正常了,但是,當然還是要把數據修改上去
mysql>update tables set 。。。。。。。

其實還有一個禁忌設定方式,可以跳過一些復制報錯,因為不建議,只是拿出來說說可以這么干

#修改配置文件
vim /etc/my.cnf
[mysqld]
#跳過指定error no類型的錯誤
#slave-skip-errors=1062,1053,1146
#跳過所有錯誤
#slave-skip-errors=all



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女