解决Mysql 主从或主主报1032错误
1032错误的主要原因是主库更新或者是删除的记录在从库上不存在引起的。
处理此种错误一般有两种思路:
1、直接跳过错误执行语句
2、找到错误执行语句,修复从库数据
第一种解决方案会有造成主从不一致的隐患(delete语句可以跳过),第二种是从根本上解决问题比较推荐
语句跳过操作方法如下:
1032 错误提示如下:
Replicate_Wild_Ignore_Table: Last_Errno: 1032Last_Error: Could not execute Update_rows event on table test.test; Can't find record in 'test', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql1-bin.000001, end_log_pos 2579Skip_Counter: 0
—传统模式
mysql> stop slave;
#表示跳过一步错误,后面的数字可变,(或者N条event,一条一条跳过)
mysql> set global sql_slave_skip_counter =1;
mysql> start slave;之后再用mysql> show slave status/G 查看:mysql> show slave status/G;
*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.1.20Master_User: rep1Master_Port: 3306Connect_Retry: 60Master_Log_File: mysql1-bin.000001Read_Master_Log_Pos: 2610Relay_Log_File: cndba-relay-bin.000005Relay_Log_Pos: 321Relay_Master_Log_File: mysql1-bin.000001Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB: test
#还有一种方法跳过所有1032错误
更改my.cnf文件,在Replication settings下添加:slave-skip-errors = 1032
并重启数据库,然后start salve。
注意:因为要重启数据库,不推荐,除非错误事件太多。
—GTID模式
mysql> stop slave;
通过show slave status/G;找到Retrieved_Gtid_Set:7800a22c-95ae-11e4-983d-080027de205a:12
mysql> set GTID_NEXT='7800a22c-95ae-11e4-983d-080027de205a:12'
mysql> begin;commit;
mysql> set GTID_NEXT='AUTOMATIC';
mysql> start slave;
模拟1032场景:
主库创建表
mysql> create table test(id int PRIMARY KEY ,name varchar(32));
Query OK, 0 rows affected (0.06 sec)
修改参数sql_log_bin 使主库操作不同步到从库
mysql> set sql_log_bin=0;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into test values (1,'aa');
Query OK, 1 row affected (0.02 sec)
mysql> insert into test values (2,'bb');
Query OK, 1 row affected (0.01 sec)
mysql> insert into test values (3,'dd');
Query OK, 1 row affected (0.00 sec)
修改参数sql_log_bin 使主库操作说同步到从库
mysql> set sql_log_bin=1;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into test values (4,'cc');
Query OK, 1 row affected (0.08 sec)
mysql> select * from test;
+----+------+
| id | name |
+----+------+
| 1 | aa |
| 2 | bb |
| 3 | dd |
| 4 | cc |
+----+------+
4 rows in set (0.00 sec)
从库查看数据同步情况
可以看到从库数据只同步了一条数据
mysql> select * from test;
+----+------+
| id | name |
+----+------+
| 4 | cc |
+----+------+
1 row in set (0.00 sec)
在主库更新表test
mysql> update test set name = 'abc' where id=1;
Query OK, 1 row affected (0.07 sec)
Rows matched: 1 Changed: 1 Warnings: 0
此时在插入一条数据:
mysql> insert into test values (5,'dd');
Query OK, 1 row affected (0.01 sec)
在备库查看主从状态
发现报1032错误,发生这个错误的原因是因为从库没有id=1的数据,导致更新主库,从库没有相应的数据进行修改。
mysql> show slave status/G;
......Last_Errno: 1032Last_Error: Could not execute Update_rows event on table test.test; Can't find record in 'test', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql1-bin.000001, end_log_pos 2037Skip_Counter: 0Exec_Master_Log_Pos: 1792Relay_Log_Space: 2264Until_Condition: NoneUntil_Log_File: Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_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: NoLast_IO_Errno: 0Last_IO_Error: Last_SQL_Errno: 1032Last_SQL_Error: Could not execute Update_rows event on table test.test; Can't find record in 'test', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql1-bin.000001, end_log_pos 2037Replicate_Ignore_Server_Ids: Master_Server_Id: 20
......
解决办法:
根据Last_Error中提示的master log和end_log_pos的位置查找这条从库上缺失的数据
主库操作:
[root@cndba binlog]# mysqlbinlog --no-defaults -v --base64-output=decode-rows --stop-position=2037 /data/mysql/binlog/mysql1-bin.000001 | tail -20
SET TIMESTAMP=1534626999/*!*/;
BEGIN
/*!*/;
# at 1934
#180819 5:16:39 server id 20 end_log_pos 1984 CRC32 0x666a3738 Table_map: `test`.`test` mapped to number 220
# at 1984
#180819 5:16:39 server id 20 end_log_pos 2037 CRC32 0x74a99c1f Update_rows: table id 220 flags: STMT_END_F
### UPDATE `test`.`test`
### WHERE
### @1=1
### @2='aa'
### SET
### @1=1
### @2='abc'
ROLLBACK /* added by mysqlbinlog */ /*!*/;
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*/;找到之后,手动转变为insert 语句
从库执行以下语句:
mysql> insert into `test`.`test` values (1,'aa');
Query OK, 1 row affected (0.03 sec)
启动复制
mysql> start slave;
Query OK, 0 rows affected (0.03 sec)
查看从库状态:
mysql> show slave status/G;
......Slave_IO_Running: YesSlave_SQL_Running: Yes
......
mysql> select * from test;
+----+------+
| id | name |
+----+------+
| 1 | abc |
| 4 | cc |
| 5 | dd |
+----+------+
通过以上结果可以看到状态正常了,并且在错误发生之后插入的数据也通过到从库,可以得出结论,只要修复1032错误不会对错误发生之后的数据产生影响。
解决Mysql 主从或主主报1032错误相关推荐
- 解决Mysql 主从或主主报1062错误
1062错误--主键冲突,出现这种情况就是从库出现插入操作,主库又插入相同的数据,iothread没问题,sqlthread出错 处理此种错误一般有两种思路: 1.直接跳过错误执行语句 2.找到错误执 ...
- mysql主从1594错误_3分钟解决MySQL主从1594错误
3分钟解决MySQL主从1594错误简介 Part1:写在最前 1594这个错误看起来挺严重的,会提示你binlog文件或者Relay log损坏了,例如binary log is corrupted ...
- 学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践
学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践 原文 学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践 感谢大家在上一篇 学一 ...
- mysql 双机异地热备份—-mysql主从,主主备份原理及实践
简单介绍mysql双机,多机异地热备简单原理实战. 双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步.对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致. 这样做 ...
- mysql主从节点不一致_一种粗暴快速的解决mysql主从不同步错误的思路
一种粗暴快速的解决mysql主从不同步错误的思路 mysql主从经常会出现主从数据不同步的问题,脏数据会造成主从同步中断, 出现大量ERROR,如1032,1062等错误.常规方法是逐条删除脏数据或者 ...
- mysql主从脚本--主
标题mysql主从脚本–主 #!/bin/bashecho "关闭防火墙" systemctl stop firewalld.service setenforce 0#判断防火墙是 ...
- mysql手动启动1067错误_解决MySQL启动时万恶的1067错误(转)
解决MySQL启动时万恶的1067错误(转)[@more@]我的机器不知为何,安装MySQL的时候,一到配置那一步就无休止的等待,只好结束任务,然而启动MySQL的时候出现1067错误提示.卸载,依然 ...
- mysql主从、主主复制及高可用性
mysql主从.主主复制及高可用性 一:MySQL复制: mysql复制简介: 将master服务器中主数据库的ddl和dml操作通过二进制日志传到slaves服务器上,然后在master服务器上将这 ...
- 快速理解mysql主从,主主备份原理及实践
双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步.对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致. 这样做的好处多. 1. 可以做灾备,其中一个坏了可以切换到 ...
最新文章
- 95后程序员月薪2万背着电脑送外卖,送单途中改Bug
- CodeIgniter源码分析(一) 目录结构
- 关于make *.img时没有权限的问题
- chrome浏览器最小字号解决方案
- thinkpad笔记本散热风扇_极致的散热体验,ORICO 全铝DIY双风扇笔记本散热垫评测...
- Python 基础 —— Python程序员常犯的那些错误
- 【Pre-Training】关于 Transformer 那些的你不知道的事
- python吃鸡透视_绝地求生仅需这个设置!让你的电脑自带透视!吃鸡到手软
- Sybase迁移Oracle字符集问题,Sybase数据库迁移数据到Oracle(未改进)
- vhdl入门6分频器
- 【C】C语言判断文件后缀名
- springboot+nodejs+vue+elementui教师下乡支教岗位申请系统java项目源码
- Centos 7.5 1804安装绿联PL2303串口驱动
- Mac上的PowerPoint保存时出现“连同字体保存”——“某些字体无法随演示文稿一起保存。仍然要保存演示文稿吗?”
- 浅谈人工智能与游戏思维
- 手写由链表设计的简易队列
- LeetCode : 502. IPO 分析与解答
- 那些浏览器的神仙插件
- android service什么时候销毁,阳光沙滩-android 通过AppWidgetProvider 启动的Service会自动销毁问题...
- xm在线转换成mp3_全民K歌月花费25万,95后表示在线K歌可以换一种玩法