mysql主从复制报错排查及解决--总结
最近遇到了好多次mysql主从复制报错终止的情况,现做个汇总和总结,不够全面,后面遇到了再进行补充吧。
1.第一种:在master上删除一条记录,而slave上找不到。
Last_SQL_Error: Could not execute Delete_rows event on table hcy.t1;
Can't find record in 't1',
Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND;
the event's master log mysql-bin.000006, end_log_pos 254
解决方法:
由于master要删除一条记录,而slave上找不到故报错,这种情况主上都将其删除了,那么从机可以直接跳过。可用命令:
mysql > stop slave;
mysql > set global sql_slave_skip_counter=1;
mysql > start slave;
如果这种情况很多,可用我写的一个脚本skip_error_replcation.sh,默认跳过10个错误(只针对这种情况才跳,其他情况输出错误结果,等待处理),这个脚本是参考maakit工具包的mk-slave-restart原理用shell写的,功能上定义了一些自己的东西,不是无论什么错误都一律跳过。)
2.第二种:主键重复。在slave已经有该记录,又在master上插入了同一条记录。
Last_SQL_Error: Could not execute Write_rows event on table hcy.t1;
Duplicate entry '2' for key 'PRIMARY',
Error_code: 1062;
handler error HA_ERR_FOUND_DUPP_KEY; the event's master log mysql-bin.000006, end_log_pos 924
解决办法:
查看表结构,比较主库和从库的数据,删除从库重复的主键。
mysql> delete from t1 where id=2;
Query OK, 1 row affected (0.00 sec)mysql> start slave;
Query OK, 0 rows affected (0.00 sec)mysql> show slave status\G;
……
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
……
mysql> select * from t1 where id=2;
3.第三种:在master上更新一条记录,而slave上找不到,丢失了数据。
Last_SQL_Error: Could not execute Update_rows event on table hcy.t1;
Can't find record in 't1',
Error_code: 1032;
handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000010, end_log_pos 263
解决办法:
在master上,用mysqlbinlog 分析下出错的binlog日志在干什么。
/usr/local/mysql/bin/mysqlbinlog --no-defaults -v -v --base64-output=DECODE-ROWS mysql-bin.000010 | grep -A '10' 794#120302 12:08:36 server id 22 end_log_pos 794 Update_rows: table id 33 flags: STMT_END_F
### UPDATE hcy.t1
### WHERE
### @1=2 /* INT meta=0 nullable=0 is_null=0 */
### @2='bbc' /* STRING(4) meta=65028 nullable=1 is_null=0 */
### SET
### @1=2 /* INT meta=0 nullable=0 is_null=0 */
### @2='BTV' /* STRING(4) meta=65028 nullable=1 is_null=0 */
# at 794
#120302 12:08:36 server id 22 end_log_pos 821 Xid = 60
COMMIT/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
在slave上,查找下更新后的那条记录,应该是不存在的。
mysql> select * from t1 where id=2;
Empty set (0.00 sec)
然后再到master查看
mysql> select * from t1 where id=2;
+----+------+
| id | name |
+----+------+
| 2 | BTV |
+----+------+
1 row in set (0.00 sec)
把丢失的数据在slave上填补,然后跳过报错即可。
mysql> insert into t1 values (2,'BTV');
Query OK, 1 row affected (0.00 sec)mysql> select * from t1 where id=2;
+----+------+
| id | name |
+----+------+
| 2 | BTV |
+----+------+
1 row in set (0.00 sec)mysql> stop slave ;set global sql_slave_skip_counter=1;start slave;
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)mysql> show slave status\G;
……Slave_IO_Running: YesSlave_SQL_Running: Yes
……
mysql主从复制报错排查及解决--总结相关推荐
- mysql 启动服务1067_windows无法启动MySQL服务报错1067的解决方法
突然登陆MySQL时,出现禁止访问或者无法连接到数据库,回到服务,去打开wampmysqld ,发现 "windows无法启动MySQL服务 错误1067" ,死活启动不了,咋办? ...
- 4、Mysql 主从复制报错[ERROR] [MY-013117] 踩坑
2020-07-01T14:34:42.709318Z 12 [ERROR] [MY-013117] [Repl] Slave I/O for channel '': Fatal error: The ...
- 1067 mysql_windows无法启动MySQL服务报错1067的解决方法
突然登陆MySQL时,出现禁止访问或者无法连接到数据库,回到服务,去打开wampmysqld ,发现 "windows无法启动MySQL服务 错误1067" ,死活启动不了,咋办? ...
- mysql source 报错 Unknown command ‘\‘‘ 解决办法(本人的第一个博客嘿嘿)
系统:Windows10 MySQL5.7.36通过source 导入数据总是报如下错误: ERROR: Unknown command '''. ERROR: Unknown command '&q ...
- MYSQL启动报错1053错误解决
在网上有人说是服务的"登录"选项卡里要设置成administrator: 也有人说是要用DOS命令行使用 mysqld -nt remove mysqlservice和 mysql ...
- 常见主从复制报错处理案例
文章目录 一.主从复制原理 1.开启主从复制的必要条件 2.主从复制的大致流程 二.基本排查手段 1.复制同步信息 2.数据库错误日志 3.系统日志 三.常见报错案例 3.1 Last_Errno - ...
- MySQL启动报错1067(附排查解决方法)
MySQL启动报错1067,一般出现在刚装好数据库的时候,而且是用解压安装的方式安装的数据库 出现这个问题解决思路如下: 先去定位问题,接着删除MySQL服务,然后重新安装服务. 当出现服务错误的时候 ...
- mysql 复制 错误 1007_mysql5.7.24Gtid下主从复制报错1007
一.配置mysql gtid下主从复制 master库192.195.1.131操作: [root@VM_82_178_centos ~]# mysql -e "grant replicat ...
- mysql full group by_MySql报错only_full_group_by的解决办法
前段时间我在一个新环境里部署程序时遇到MySql报错only_full_group_by,之前已经遇到过一次同样的问题,当时没有总结经验,导致这次解决时耗费了不少时间,这里把本次的处理过程进行记录总结 ...
最新文章
- HTML服务器控件与Web服务器控件的区别[转]
- 解决linux中Kipmi0进程对CPU使用率很高问题
- 用递归调用法求斐波那契函数_进阶版:面试官问你斐波那契数列的时候不要高兴得太早...
- 物理学家杨振宁到底有多厉害?
- 1320A. Journey Planning
- 2021 最新 IDEA集成Gitee、Gitee迁移GitHub【图文讲解】
- 在React的render方法中使用箭头函数
- 大数据服务,至少有四点还值得存疑
- Java学习资料-Java容器
- Gram 矩阵及其主要性质
- acm中c语言标准输入输出,ACM竞赛之输入输出
- java混淆书籍介绍,第二代Java混淆器Allatori功能介绍教程资源
- 三星,现代,中颖,合泰,松翰等单片机定时器溢出计算公式
- CSS超链接标记大全
- STM32 之 HAL库
- SpringBoot之九重九阳神功
- OC block的回环引用
- 剑指offer——栈
- 浏览器网页缩放对页面的影响
- 从乔布斯卸任看苹果未来三年 会否半途而废?