1. 程式人生 > >傳統複製常見錯誤及填坑方法

傳統複製常見錯誤及填坑方法

傳統複製常見錯誤及填坑方法
環境
1、表不存在導致插入更新失敗
1.1、模擬複製錯誤產生
1.1.1、生成測試表sbtest.test
1.1.2、在備庫上檢視是否同步test表
1.1.3、主庫上往test表中插入資料
1.1.4、檢視備庫複製情況
1.2、複製錯誤跳過
1.2.1、主庫上檢視event執行資訊
1.2.2、結合主備資訊跳過錯誤
1.2.3、手動補上資料
2、ERROR 1062 從庫插入了資料,主鍵重複
2.1、模擬錯誤產生

2.1.1、建立測試表sbtest.shuihuchuan
2.1.2、備庫上檢視同步情況
2.1.3、備庫上插入資料
2.1.4、主庫上插入資料
2.1.5、檢視備庫複製情況
2.2、主鍵重複錯誤解決
2.2.1、備庫上刪除重複主鍵的記錄
3、ERROR 1032 刪除或更新資料,從庫找不到記錄
3.1、Could not execute Delete_rows錯誤
3.1.1、模擬複製報錯
3.1.2、記錄已經不存在,直接跳過錯誤就可以
3.2、Could not execute Update_rows錯誤

3.2.1、模擬複製報錯
3.2.2、從庫恢復不存在的記錄,並解決錯誤

傳統複製常見錯誤及填坑方法

環境

  • 主庫:IP:192.168.1.21;版本:5.7.18
  • 備庫:IP:192.168.1.128;版本:5.6.36
  • 主庫測試庫: sbtest
  • 備庫配置:Replicate_Do_DB: sbtest

1、表不存在導致插入更新失敗

1.1、模擬複製錯誤產生

1.1.1、生成測試表sbtest.test

  • 在指定的複製庫下生成測試表test。但,不在sbtest庫下操作,而選擇了在mysql庫下操作生成sbtest.test
  
  1. #主庫上操作
  2. mysql> use mysql
  3. Database changed
  4. mysql> create table sbtest.test ( id int );
  5. Query OK, 0 rows affected (0.08 sec)
  6. mysql> use sbtest;
  7. Database changed
  8. mysql> show tables;
  9. +------------------+
  10. | Tables_in_sbtest |
  11. +------------------+
  12. | sanguoyanyi |
  13. | test |
  14. | xiyouji |
  15. +------------------+
  16. 3 rows in set (0.00 sec)

1.1.2、在備庫上檢視是否同步test表

  
  1. #備庫上操作
  2. [email protected] : sbtest 03:33:13> use sbtest;
  3. Database changed
  4. [email protected] : sbtest 03:41:18> show tables;
  5. +------------------+
  6. | Tables_in_sbtest |
  7. +------------------+
  8. | sanguoyanyi |
  9. | xiyouji |
  10. +------------------+
  11. 2 rows in set (0.00 sec)
  12. [email protected] : sbtest 03:41:43> show slave status\G;
  13. *************************** 1. row ***************************
  14. Slave_IO_State: Waiting for master to send event
  15. Master_Host: 192.168.1.21
  16. Master_User: repl
  17. Master_Port: 3306
  18. Connect_Retry: 60
  19. Master_Log_File: mysql-bin.000026
  20. Read_Master_Log_Pos: 331
  21. Relay_Log_File: mysql-relay-bin.000004
  22. Relay_Log_Pos: 463
  23. Relay_Master_Log_File: mysql-bin.000026
  24. Slave_IO_Running: Yes
  25. Slave_SQL_Running: Yes
  26. Replicate_Do_DB: sbtest
  27. Replicate_Ignore_DB:
  28. Replicate_Do_Table:
  29. Replicate_Ignore_Table:
  30. Replicate_Wild_Do_Table:
  31. Replicate_Wild_Ignore_Table:
  32. Last_Errno: 0
  33. Last_Error:
  34. Skip_Counter: 0
  35. Exec_Master_Log_Pos: 331
  36. Relay_Log_Space: 636
  37. Until_Condition: None
  38. Until_Log_File:
  39. Until_Log_Pos: 0
  40. Master_SSL_Allowed: No
  41. Master_SSL_CA_File:
  42. Master_SSL_CA_Path:
  43. Master_SSL_Cert:
  44. Master_SSL_Cipher:
  45. Master_SSL_Key:
  46. Seconds_Behind_Master: 0
  47. Master_SSL_Verify_Server_Cert: No
  48. Last_IO_Errno: 0
  49. Last_IO_Error:
  50. Last_SQL_Errno: 0
  51. Last_SQL_Error:
  52. Replicate_Ignore_Server_Ids:
  53. Master_Server_Id: 12001
  54. Master_UUID: 0a646c88-36e2-11e7-937d-fa163ed7a7b1
  55. Master_Info_File: mysql.slave_master_info
  56. SQL_Delay: 0
  57. SQL_Remaining_Delay: NULL
  58. Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
  59. Master_Retry_Count: 86400
  60. Master_Bind:
  61. Last_IO_Error_Timestamp: