mysql主從同步如何跳過錯誤

mysql主從同步跳過錯誤的方法:1、跳過指定數量的事務,代碼為【mysql>SET GLOBAL SQL_SLAVE_SKIP..】;2、修改mysql的配置文件,通過【slave_skip_errors】參數來跳所有錯誤。

mysql主從同步如何跳過錯誤

本教程操作環境:windows7系統、mysql 5.6.14版,DELL G3電腦,該方法適用于所有品牌電腦。

相關免費學習推薦:mysql視頻教程

mysql主從同步跳過錯誤的方法:

1、跳過指定數量的事務:

mysql>slave?stop; mysql>SET?GLOBAL?SQL_SLAVE_SKIP_COUNTER?=?1????????#跳過一個事務 mysql>slave?start

2、修改mysql的配置文件,通過slave_skip_errors參數來跳所有錯誤或指定類型的錯誤

vi?/etc/my.cnf [mysqld] #slave-skip-errors=1062,1053,1146??#跳過指定error?no類型的錯誤 #slave-skip-errors=all??#跳過所有錯誤

例:下面模擬一個錯誤場景

環境(一個已經配置好的主從復制環境)

master數據庫IP:192.168.247.128

slave數據庫IP:192.168.247.130

mysql版本:5.6.14

binlog-do-db = mydb

在master上執行以下語句:

mysql>use?mysql; mysql>create?table?t1?(id?int); mysql>use?mydb; mysql>insert?into?mysql.t1?select?1;

在slave上查看復制狀態

mysql>?show?slave?statusG ***************************?1.?row?*************************** ???????????????Slave_IO_State:?Waiting?for?master?to?send?event ??????????????????Master_Host:?192.168.247.128 ??????????????????Master_User:?repl ??????????????????Master_Port:?3306 ????????????????Connect_Retry:?60 ??????????????Master_Log_File:?mysql-bin.000017 ??????????Read_Master_Log_Pos:?2341 ???????????????Relay_Log_File:?DBtest1-relay-bin.000011 ????????????????Relay_Log_Pos:?494 ????????Relay_Master_Log_File:?mysql-bin.000017 ?????????????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:?1146 ???????????????????Last_Error:?Error?'Table?'mysql.t1'?doesn't?exist'?on?query.?Default?database:?'mydb'.?Query:?'insert?into?mysql.t1?select?1' ?????????????????Skip_Counter:?0 ??????????Exec_Master_Log_Pos:?1919 ??????????????Relay_Log_Space:?1254 ??????????????Until_Condition:?None ???????????????Until_Log_File:? ????????????????Until_Log_Pos:?0 ???????????Master_SSL_Allowed:?No ???????????Master_SSL_CA_File:? ???????????Master_SSL_CA_Path:? ??????????????Master_SSL_Cert:? ????????????Master_SSL_Cipher:? ???????????????Master_SSL_Key:? ????????Seconds_Behind_Master:?NULL Master_SSL_Verify_Server_Cert:?No ????????????????Last_IO_Errno:?0 ????????????????Last_IO_Error:? ???????????????Last_SQL_Errno:?1146 ???????????????Last_SQL_Error:?Error?'Table?'mysql.t1'?doesn't?exist'?on?query.?Default?database:?'mydb'.?Query:?'insert?into?mysql.t1?select?1' ??Replicate_Ignore_Server_Ids:? ?????????????Master_Server_Id:?1 ??????????????????Master_UUID:?f0f7faf6-51a8-11e3-9759-000c29eed3ea ?????????????Master_Info_File:?/var/lib/mysql/master.info ????????????????????SQL_Delay:?0 ??????????SQL_Remaining_Delay:?NULL ??????Slave_SQL_Running_State:? ???????????Master_Retry_Count:?86400 ??????????????????Master_Bind:? ??????Last_IO_Error_Timestamp:? ?????Last_SQL_Error_Timestamp:?131210?21:37:19 ???????????????Master_SSL_Crl:? ???????????Master_SSL_Crlpath:? ???????????Retrieved_Gtid_Set:? ????????????Executed_Gtid_Set:? ????????????????Auto_Position:?0 1?row?in?set?(0.00?sec)

由結果可以看到,Read_Master_Log_Pos: 2341,Exec_Master_Log_Pos: 1919時出錯了Last_SQL_Error: Error ‘Table ‘mysql.t1′ doesn’t exist’ on query.

因為只對mydb記錄了binlog,當在mydb庫操作其它數據庫的表,但該表在slave上又不存在時就出錯了。

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享