1.接到mysql主從不同步的報警,看日志
Relay_Master_Log_File: mysql-bin.000119 Slave_IO_Running: Yes Slave_SQL_Running: No Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 1062 Last_Error: Could not execute Write_rows event on table bbh_159.log_process; Duplicate entry '1' for key 'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log mysql-bin.000119, end_log_pos 764433484
2.查看錯誤碼Last_Errno: 1062信息
出現的可能原因: 1.程序可能在slave上進行了寫操作 2.也可能是slave機器重起后,事務回滾造成的.
3.定位原因:
1.程序可能在slave上進行了寫操作 程序在修改代碼邏輯時,誤將數據寫入從庫了
4.解決問題
1.登陸從庫:mysql -h127.0.0.1 -uroot -P3307 -pxxxx 2.查看從庫同步情況:mysql> show slave status\G; 3.關閉從庫 4.修改my.cnf 加入 slave-skip-errors = 1062 【slave-skip-errors為只讀參數,不支持在線更改】
5.啟動從庫 6.驗證同步情況
6.問題總結
1.從庫只能做讀操作,不能寫操作。 2.使用從庫時,應創建只讀普通用戶,避免執行寫操作。 3.開啟只讀模式,配置文件加入read-only = 1 ,但還需創建只讀普通用戶,因為只讀模式對超級用戶沒有限制。