gtid多源复制1062故障处理
create database testdb214;
use testdb214;
CREATE TABLE `info_area` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '地区ID',
`name` varchar(20) NOT NULL DEFAULT '' COMMENT '名称',
`rel_id` varchar(50) NOT NULL DEFAULT '' COMMENT '关系ID',
`pid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '父ID',
`level` int(11) NOT NULL DEFAULT '0' COMMENT '类别,1、省份 2、市 3、区 4、县',
PRIMARY KEY (`id`),
UNIQUE KEY `uq_rel_id` (`rel_id`),
KEY `idx_pid` (`rel_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='地区表';
INSERT INTO `info_area` (`id`, `name`, `rel_id`, `pid`, `level`) VALUES ('10000', '北京', '10000', '10000', '1');
INSERT INTO `info_area` (`id`, `name`, `rel_id`, `pid`, `level`) VALUES ('10001', '三环以内', '100001000110001', '10001', '3');
INSERT INTO `info_area` (`id`, `name`, `rel_id`, `pid`, `level`) VALUES ('10002', '三环到四环之间', '100001000110002', '10002', '2');
INSERT INTO `info_area` (`id`, `name`, `rel_id`, `pid`, `level`) VALUES ('10003', '三环到四环之间', '100001000110003', '10003', '3');
INSERT INTO `info_area` (`id`, `name`, `rel_id`, `pid`, `level`) VALUES ('10004', '三环到四环之间', '100001000110004', '10004', '4');
################################################# 1062 故障处理 #########################################
# 模拟1062错误
在从库中插入数据
set sql_log_bin=0;
insert into `testdb214`.`info_area` values (10001,'三环以内','100001000110001',10001,3);
set sql_log_bin=1;
mysql> show replica status for channel 'testdb214'G;
*************************** 1. row ***************************
Replica_IO_State: Waiting for master to send event
Source_Host: 10.100.19.214
Source_User: mysqlsync
Source_Port: 3306
Connect_Retry: 60
Source_Log_File: mysql-binlog.000001
Read_Source_Log_Pos: 5844
Relay_Log_File: relay-log-testdb214.000003
Relay_Log_Pos: 467
Relay_Source_Log_File: mysql-binlog.000001 # 非常重要
Replica_IO_Running: Yes
Replica_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table: test.%
Last_Errno: 1062
Last_Error: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction '7b68143a-645e-11eb-b60f-fa163ea9cdf0:12' at master log mysql-binlog.000001, end_log_pos 5813. See error log and/or performance_schema.replication_applier_status_by_worker table for more details about this failure or others, if any.
Skip_Counter: 0
Exec_Source_Log_Pos: 5389 # 非常重要
Relay_Log_Space: 6589
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Source_SSL_Allowed: No
Source_SSL_CA_File:
Source_SSL_CA_Path:
Source_SSL_Cert:
Source_SSL_Cipher:
Source_SSL_Key:
Seconds_Behind_Source: NULL
Source_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 1062
Last_SQL_Error: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction '7b68143a-645e-11eb-b60f-fa163ea9cdf0:12' at master log mysql-binlog.000001, end_log_pos 5813. See error log and/or performance_schema.replication_applier_status_by_worker table for more details about this failure or others, if any.
Replicate_Ignore_Server_Ids:
Source_Server_Id: 10402
Source_UUID: 7b68143a-645e-11eb-b60f-fa163ea9cdf0
Source_Info_File: mysql.slave_master_info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Replica_SQL_Running_State:
Source_Retry_Count: 86400
Source_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp: 210203 14:37:52
Source_SSL_Crl:
Source_SSL_Crlpath:
Retrieved_Gtid_Set: 7b68143a-645e-11eb-b60f-fa163ea9cdf0:1-12
Executed_Gtid_Set:
Auto_Position: 1
Replicate_Rewrite_DB:
Channel_Name: testdb214
Source_TLS_Version:
Source_public_key_path:
Get_Source_public_key: 0
Network_Namespace:
1 row in set (0.00 sec)
ERROR:
No query specified
mysql>
# 解决办法:(从上述信息,可以看出,错误提示已经不再像以前那么明显了,所以正确可能的办法,还是解析日志,确认引起错误的原因)
mysqlbinlog -vvv --base64-output=decode-rows --start-position=5389 mysql-binlog.000001 >01.binlog
# at 5389
#210203 14:37:52 server id 10402 end_log_pos 5468 CRC32 0x52564c87 GTID last_committed=11 sequence_number=12 rbr_only=yes original_committed_timestamp=1612334272398566 immediate_commit_timestamp=1612334272398566 transaction_length=455
/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;
# original_commit_timestamp=1612334272398566 (2021-02-03 14:37:52.398566 CST)
# immediate_commit_timestamp=1612334272398566 (2021-02-03 14:37:52.398566 CST)
/*!80001 SET @@session.original_commit_timestamp=1612334272398566*//*!*/;
/*!80014 SET @@session.original_server_version=80023*//*!*/;
/*!80014 SET @@session.immediate_server_version=80023*//*!*/;
SET @@SESSION.GTID_NEXT= '7b68143a-645e-11eb-b60f-fa163ea9cdf0:12'/*!*/;
# at 5468
#210203 14:37:52 server id 10402 end_log_pos 5548 CRC32 0x127f7b30 Query thread_id=76 exec_time=0 error_code=0
SET TIMESTAMP=1612334272/*!*/;
SET @@session.pseudo_thread_id=76/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1168113664/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!C utf8mb4 *//*!*/;
SET @@session.character_set_client=255,@@session.collation_connection=255,@@session.collation_server=255/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
/*!80011 SET @@session.default_collation_for_utf8mb4=255*//*!*/;
BEGIN
/*!*/;
# at 5548
#210203 14:37:52 server id 10402 end_log_pos 5663 CRC32 0xd831c640 Rows_query
# insert into `testdb214`.`info_area` values (10001,'三环以内','100001000110001',10001,3)
# at 5663
#210203 14:37:52 server id 10402 end_log_pos 5736 CRC32 0xbd3f6636 Table_map: `testdb214`.`info_area` mapped to number 311
# at 5736
#210203 14:37:52 server id 10402 end_log_pos 5813 CRC32 0x11bf5e98 Write_rows: table id 311 flags: STMT_END_F
### INSERT INTO `testdb214`.`info_area`
### SET
### @1=10001 /* INT meta=0 nullable=0 is_null=0 */
### @2='三环以内' /* VARSTRING(80) meta=80 nullable=0 is_null=0 */
### @3='100001000110001' /* VARSTRING(200) meta=200 nullable=0 is_null=0 */
### @4=10001 /* INT meta=0 nullable=0 is_null=0 */
### @5=3 /* INT meta=0 nullable=0 is_null=0 */
# at 5813
#210203 14:37:52 server id 10402 end_log_pos 5844 CRC32 0x92e0ec8d Xid = 615
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
在从库中删除掉这个重复的数据即可
mysql> select * from info_area where id=10001;
+-------+--------------+-----------------+-------+-------+
| id | name | rel_id | pid | level |
+-------+--------------+-----------------+-------+-------+
| 10001 | 三环以内 | 100001000110001 | 10001 | 3 |
+-------+--------------+-----------------+-------+-------+
1 row in set (0.00 sec)
set sql_log_bin=0;
delete from info_area where id=10001;
set sql_log_bin=1;
start replica sql_thread for channel 'testdb214';
mysql> show replica status for channel 'testdb214'G;
*************************** 1. row ***************************
Replica_IO_State: Waiting for master to send event
Source_Host: 10.100.19.214
Source_User: mysqlsync
Source_Port: 3306
Connect_Retry: 60
Source_Log_File: mysql-binlog.000001
Read_Source_Log_Pos: 5844
Relay_Log_File: relay-log-testdb214.000003
Relay_Log_Pos: 922
Relay_Source_Log_File: mysql-binlog.000001
Replica_IO_Running: Yes
Replica_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table: test.%
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Source_Log_Pos: 5844
Relay_Log_Space: 6589
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Source_SSL_Allowed: No
Source_SSL_CA_File:
Source_SSL_CA_Path:
Source_SSL_Cert:
Source_SSL_Cipher:
Source_SSL_Key:
Seconds_Behind_Source: 0
Source_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Source_Server_Id: 10402
Source_UUID: 7b68143a-645e-11eb-b60f-fa163ea9cdf0
Source_Info_File: mysql.slave_master_info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Replica_SQL_Running_State: Slave has read all relay log; waiting for more updates
Source_Retry_Count: 86400
Source_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Source_SSL_Crl:
Source_SSL_Crlpath:
Retrieved_Gtid_Set: 7b68143a-645e-11eb-b60f-fa163ea9cdf0:1-12
Executed_Gtid_Set: 7b68143a-645e-11eb-b60f-fa163ea9cdf0:12
Auto_Position: 1
Replicate_Rewrite_DB:
Channel_Name: testdb214
Source_TLS_Version:
Source_public_key_path:
Get_Source_public_key: 0
Network_Namespace:
1 row in set (0.00 sec)
ERROR:
No query specified
mysql>