1032错误----现在生产库中好多数据,在从库误删了,生产库更新后找不到了,现在主从不同步了,再跳过错误也没用,因为没这条,再更新还会报错
问题
出现了主从不一致,开始分析原因。
主库上
mysql -uroot -p
show master status \G;

主库上只看master哦
从库上
mysql -uroot -p
show slave status \G;

从库上只看slave哦
可以看到最近一条报错信息如下:
Could not execute Update_rows event on table infosys_login.business_login_user_auth_info;
Can't find record in 'business_login_user_auth_info', Error_code: 1032;
handler error HA_ERR_KEY_NOT_FOUND; the event's master log bin.000094, end_log_pos 537072939
问题分析
1032主要有两种情况:
该异常时由于mysql slave备机不存在该记录,但是主机master删除时无需报1032错误,可以通过my.cnf可配置slave-skip-errors=1032 从而跳过日志中1032 ERROR报错。或者如下执行:
mysql> set global sql_slave_skip_counter=1;
Query OK, 0 rows affected (0.00 sec)
mysql> stop slave;
Query OK, 0 rows affected (0.02 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
上面的解决方式一般解决不了问题或无法永久解决问题时可以采取这种方式: 根据报错信息中的binlog日志文件bin.000094和endlogpos位置537072939来分析binlog,查找实际引发问题的sql。
1. 查找位置
[root@test13 mysql]# find / -name mysqlbinlog
/usr/bin/mysqlbinlog
[root@test13 ~]# find / -name bin.000094
/work1/data/mysql/bin.000094
2. 解析binlog

[
可以看到是一条更新语句,UPDATE infosys_login
. business_login_user_auth_info
where XXX ...
@1=272998577393905664对应的是库中的id,去从库中查看时,这条记录确实是被开发人员手动删除了的,从而造成了1032错误。
在从库中插入这条记录,执行:
insert into `business_login_user_auth_info`(`id`,`login_id`,`login_pwd`,`user_type`,`face_path`,`status`,`nick_name`,`sex`,`birthday`,`province`,`city`,`app_auth_key`,`last_login_app_type`,`last_view_time`,`last_login_ip`,`Last_login_client_id`,`create_time`,`update_time`,`h5_open_id`) values (272998577393905664,'UID_AD6EF34FE8083DC3315BE6F6D4F7A8D2','b803231ec56cebd83825b18461e20c7d',11,'http://thirdqq.qlogo.cn/g?b=oidb&k=1HPyicJeGDGXbzrHSZorTmw&s=100&t=1556471196',1,'滑翔的风v愚',1,NULL,NULL,NULL,'1',NULL,NULL,NULL,NULL,'2019-08-26 14:39:06',NULL,NULL)
再执行:
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.163
Master_User: test123
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: bin.000094
Read_Master_Log_Pos: 537124219
Relay_Log_File: mysql-relay-bin.000006
Relay_Log_Pos: 314
Relay_Master_Log_File: bin.000094
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: 537124219
Relay_Log_Space: 3895
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: 163
Master_UUID: ec5e1ee1-f6e2-11e8-949d-005033ee2217
Master_Info_File: /work1/data/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
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
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec)
问题解决。




