GTID環境下從庫複製異常的跳過方法


來源:mysql

https://rmnaveed.co.uk/skip-slave-counter-with-gtid_mode-on-error-1858-hy000/


GTID下,原先使用的SQL_SLAVE_SKIP_COUNTER  就不那麼方便了,可是咱們能夠以下方式繞過:sql


在異常的從庫上執行:架構

mysql> stop slave;

mysql> set global gtid_mode=ON_PERMISSIVE; 

mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;

mysql> START SLAVE; 

mysql> SHOW SLAVE STATUS \G

mysql> set global gtid_mode=ON;

mysql> SHOW SLAVE STATUS \G


GTID_MODE是動態變量,能夠在運行時設置。在這裏,咱們須要GTID_MODE選項。ide

關閉:新的和複製的事務必須是匿名的。spa

OFF_PERMISSIVE:新事務是匿名的。複製的事務能夠是匿名事務,也能夠是 GTID 事務。事務

ON_PERMISSIVE:新事務是 GTID 事務。複製的事務能夠是匿名事務,也能夠是 GTID 事務。ip

打開:新的和複製的事務都必須是 GTID 事務。get



注意:上面這種方法,我我的不太建議直接跳過的,若是架構容許(摘一個slave集羣能抗住壓力),能夠考慮將異常的從庫從LVS或LB上摘掉流量,而後須要將主庫的對應的binlog提取出來看看從庫爲啥會複製報錯。而後根據提取出的主庫的binlog,補償到從庫去,修復掉問題,而不是一個skip直接跳過。博客


另外,須要注意的一點是: 若是是MHA+GTID架構的,建議不要讓從庫寫了數據,不然會形成MHA切換失敗(這個能夠參考蘭春大佬的博客)。 若是寫了數據的話,咱們能夠摘掉從庫流量後,重作下gtid_purged來重置下GTID信息。it

相關文章
相關標籤/搜索