mysql 主从 cap_Mysql 主从同步 slave_sql_running 为no
背景
之前搭建了主從,但沒有設置讀寫分離,從庫也能寫數據。于是想測試下在從庫寫數據會導致同步怎么樣。 結果發現,slave_sql_running為no,slava_IO_running仍然為yes.
原因
由于從庫寫數據,導致主從數據不一致,如果在主庫寫入和從庫同樣的數據,會導致sql線程終止,查看mysql錯誤日志如下:
2020-08-01T10:58:19.623077Z 135 [ERROR] Slave SQL for channel '': Could not execute Write_rows event on table shy_dep.zp_test; , Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log mysql-bin.000001, end_log_pos 882496, Error_code: 10622020-08-01T10:58:19.623101Z 135 [Warning] Slave: Error_code: 10622020-08-01T10:58:19.623110Z 135 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'mysql-bin.000001' position 882218
解決方法一
在從庫停掉slave同步,執行 stop slave;
主庫執行 SHOW MASTER STATUS,記錄下File和Position的值
從庫根據主庫的position位置重新連接進行同步
CHANGE MASTER TO master_host = '192.168.164.84',MASTER_PORT = 3306,master_user = 'root',master_password = 'root',master_log_file = 'mysql-bin.000001',master_log_pos = 902262;#這里記錄master最新的position
從庫啟動同步, start slave;
通過以上步驟,可以實現主從重新開始同步。
PS: 這里在重新啟動從庫同步時,假設主庫沒有進行寫操作。因為如果進行了寫操作,則剛才記錄的主庫position位置可能會變。
所以一般需要把主庫臨時加鎖不讓寫。
解決方法二
在從庫執行以下命令:
stop slave;set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;start slave;SHOW SLAVE STATUS.........
總結
以上是生活随笔為你收集整理的mysql 主从 cap_Mysql 主从同步 slave_sql_running 为no的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 洋葱炒肉先炒洋葱还是先炒肉?
- 下一篇: java file gettext_避免