1 簡介
mysql在主從復制過程中,由於各種的原因,從服務器可能會遇到執行BINLOG中的SQL出錯的情況,在默認情況下,服務器會停止復制進程,不再進行同步,等到用戶自行來處理。
slave-skip-errors的作用就是用來定義復制過程中從服務器可以自動跳過的錯誤號,當復制過程中遇到定義的錯誤號,就可以自動跳過,直接執行后面的SQL語句。
2 官方參考
Command-Line Format
--slave-skip-errors=name
System Variable Name
slave_skip_errors
Variable Scope
Global
Dynamic Variable
No
Permitted Values
Type
string
Default
OFF
Valid Values
OFF
[list of error codes]
all
ddl_exist_errors
slave_skip_errors選項有四個可用值,分別為:off,all,ErorCode,ddl_exist_errors。
默認情況下該參數值是off,我們可以列出具體的error code,也可以選擇all,mysql5.6及MySQL Cluster NDB 7.3以及后續版本增加了參數ddl_exist_errors,該參數包含一系列error code(1007,1008,1050,1051,1054,1060,1061,1068,1094,1146)
一些error code代表的錯誤如下:
1007:數據庫已存在,創建數據庫失敗
1008:數據庫不存在,刪除數據庫失敗
1050:數據表已存在,創建數據表失敗
1051:數據表不存在,刪除數據表失敗
1054:字段不存在,或程序文件跟數據庫有沖突
1060:字段重復,導致無法插入
1061:重復鍵名
1068:定義了多個主鍵
1094:位置線程ID
1146:數據表缺失,請恢復數據庫
1053:復制過程中主服務器宕機
1062:主鍵沖突 Duplicate entry '%s' for key %d
my.cnf中的寫法:
slave_skip_errors=1062,1053
slave_skip_errors=all
slave_skip_errors=ddl_exist_errors
作為mysql啟動參數的寫法:
--slave-skip-errors=1062,1053
--slave-skip-errors=all
--slave-skip-errors=ddl_exist_errors
從數據庫中查看該參數的值:
mysql> show variables like 'slave_skip%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| slave_skip_errors | 1007 |
+-------------------+-------+