先看下slave_exec_mod官方描述
Command-Line Format |
--slave-exec-mode=mode |
Option-File Format |
slave_exec_mode |
System Variable Name |
slave_exec_mode |
Variable Scope |
Global |
Dynamic Variable |
Yes |
|
Permitted Values |
Type |
enumeration |
Default |
STRICT (ALL) |
Default |
IDEMPOTENT (NDB) |
Valid Values |
IDEMPOTENT |
STRICT |
Controls whether IDEMPOTENT or STRICT mode is used in replication conflict resolution and error checking.IDEMPOTENT mode causes suppression of duplicate-key and no-key-found errors.
This mode is needed for multi-master replication, circular replication, and some other special replication scenarios for MySQL Cluster Replication.
[plain] view plaincopyprint?
SLAVE@root@test 07:21:41>show variables like 'slave_exec_mode';
+-----------------+--------+
| Variable_name | Value |
+-----------------+--------+
| slave_exec_mode | STRICT |
+-----------------+--------+
1 row in set (0.00 sec)
SLAVE@root@test 07:21:42>
SLAVE@root@test 07:21:41>show variables like 'slave_exec_mode';
+-----------------+--------+
| Variable_name | Value |
+-----------------+--------+
| slave_exec_mode | STRICT |
+-----------------+--------+
1 row in set (0.00 sec)
SLAVE@root@test 07:21:42>
意思是說slave_exec_mod預設是STRICT可選值是IDEMPOTENT,在多主大型複製系統中建議使用IDEMPOTENT值,它避免duplicate-key 和 no-key-found等錯誤。這個參數是動態,可以直接修改。
[plain] view plaincopyprint?
SLAVE@root@test 07:39:58>show variables like 'slave_exec_mode';
+-----------------+------------+
| Variable_name | Value |
+-----------------+------------+
| slave_exec_mode | IDEMPOTENT |
+-----------------+------------+
1 row in set (0.00 sec)
SLAVE@root@test 07:40:09>set global slave_exec_mode='strict';
Query OK, 0 rows affected (0.00 sec)
SLAVE@root@test 07:40:23>show variables like 'slave_exec_mode';
+-----------------+--------+
| Variable_name | Value |
+-----------------+--------+
| slave_exec_mode | STRICT |
+-----------------+--------+
1 row in set (0.00 sec)
SLAVE@root@test 07:40:24>set global slave_exec_mode='IDEMPOTENT';
Query OK, 0 rows affected (0.00 sec)