1. 程式人生 > 實用技巧 >mysql-5.6.20主從同步錯誤之Error_code: 1062 Duplicate entry '1' for key 'PRIMARY', Error_code: 1062

mysql-5.6.20主從同步錯誤之Error_code: 1062 Duplicate entry '1' for key 'PRIMARY', Error_code: 1062

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 ,但還需建立只讀普通使用者,因為只讀模式對超級使用者沒有限制。