來源: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