How to set slave_exec_mode to automatically skip synchronous replication errors in mysql
Editor to share with you how to set slave_exec_mode in mysql to automatically skip synchronization replication errors, I believe most people do not know much about it, so share this article for your reference, I hope you will learn a lot after reading this article, let's go to know it!
The slave_exec_mode setting can skip 1032 (record not found) and 1062 (duplicate primary key) errors and log them in the error log.
The function of slave_exec_mode is the same as that of slave_skip_errors, except that slave_exec_mode can be dynamically set online. Slave_skip_errors must be added to the configuration file for the restart to take effect.
Prepare the library
Mysql > select * from testdb1.student
+-+
| | id | name | class | score | |
+-+
| | 1 | a | 1 | 45 |
| | 2 | b | 1 | 46 | |
| | 3 | c | 2 | 89 | |
| | 4 | d | 2 | 90 | |
| | 5 | e | 3 | 67 | |
| | 6 | f | 3 | 87 | |
| | 7 | g | 4 | 77 | |
| | 8 | h | 4 | 91 | |
+-+
8 rows in set (0.00 sec)
Mysql > delete from testdb1.student where id > 5
Query OK, 3 rows affected (0.00 sec)
Mysql > commit
Query OK, 0 rows affected (0.00 sec)
# before modifying parameters
Main library master
Mysql > delete from testdb1.student where id > 7
Query OK, 1 row affected (0.00 sec)
Standby database view status
Mysql > show slave status\ G
* * 1. Row *
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.56.91
Master_User: rep
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: ray-bin.000008
Read_Master_Log_Pos: 1272
Relay_Log_File: ray-relay-bin.000003
Relay_Log_Pos: 1226
Relay_Master_Log_File: ray-bin.000008
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: 1032
Last_Error: Could not execute Delete_rows event on table testdb1.student; Can't find record in 'student', Error_code: 1032; handler error HA_ERR_END_OF_FILE; the event's master log ray-bin.000008, end_log_pos 1241
Skip_Counter: 0
Exec_Master_Log_Pos: 1065
Relay_Log_Space: 1957
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: 1032
Last_SQL_Error: Could not execute Delete_rows event on table testdb1.student; Can't find record in 'student', Error_code: 1032; handler error HA_ERR_END_OF_FILE; the event's master log ray-bin.000008, end_log_pos 1241
Replicate_Ignore_Server_Ids:
Master_Server_Id: 2
Master_UUID: 840f94e0-8ea0-11e5-af92-080027a94012
Master_Info_File: / data/3307/data/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: 151126 12:42:37
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
1 row in set (0.00 sec)
Mysql > stop slave
Query OK, 0 rows affected (0.78 sec)
Mysql > set global sql_slave_skip_counter=1
Query OK, 0 rows affected (0.01 sec)
Mysql > start slave
Query OK, 0 rows affected (0.33 sec)
# modify slave database parameters
Mysql > show variables like'% slave_exec_mode%'
+-+ +
| | Variable_name | Value |
+-+ +
| | slave_exec_mode | STRICT |
+-+ +
1 row in set (0.00 sec)
Mysql > set global slave_exec_mode=idempotent
Query OK, 0 rows affected (0.00 sec)
Mysql > show variables like'% slave_exec_mode%'
+-+ +
| | Variable_name | Value |
+-+ +
| | slave_exec_mode | IDEMPOTENT |
+-+ +
1 row in set (0.00 sec)
The main database deletes data
Mysql > delete from testdb1.student where id > 6
Query OK, 1 row affected (0.01sec)
Mysql > commit
Query OK, 0 rows affected (0.00 sec)
Prepare the database to view status and error logs
Mysql > show slave status\ G
* * 1. Row *
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.56.91
Master_User: rep
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: ray-bin.000008
Read_Master_Log_Pos: 1479
Relay_Log_File: ray-relay-bin.000004
Relay_Log_Pos: 488
Relay_Master_Log_File: ray-bin.000008
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 1479
Relay_Log_Space: 1972
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: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 2
Master_UUID: 840f94e0-8ea0-11e5-af92-080027a94012
Master_Info_File: / data/3307/data/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
1 row in set (0.00 sec)
[root@ray] # tail-20f / data/3307/data/mysql_ray.err
2015-11-26 12:50:29 12127 [Warning] Slave SQL: Could not execute Delete_rows event on table testdb1.student; Can't find record in 'student', Error_code: 1032; handler error HA_ERR_END_OF_FILE; the event's master log ray-bin.000008, end_log_pos 1655, Error_code: 1032
Note: pos may not match, because the problem of interception, do not care.
The above is all the contents of the article "how to set slave_exec_mode in mysql to automatically skip synchronous replication errors". Thank you for reading! I believe we all have a certain understanding, hope to share the content to help you, if you want to learn more knowledge, welcome to follow the industry information channel!