最近遇到了好多次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主从复制报错排查及解决--总结相关推荐

  1. mysql 启动服务1067_windows无法启动MySQL服务报错1067的解决方法

    突然登陆MySQL时,出现禁止访问或者无法连接到数据库,回到服务,去打开wampmysqld ,发现 "windows无法启动MySQL服务 错误1067" ,死活启动不了,咋办? ...

  2. 4、Mysql 主从复制报错[ERROR] [MY-013117] 踩坑

    2020-07-01T14:34:42.709318Z 12 [ERROR] [MY-013117] [Repl] Slave I/O for channel '': Fatal error: The ...

  3. 1067 mysql_windows无法启动MySQL服务报错1067的解决方法

    突然登陆MySQL时,出现禁止访问或者无法连接到数据库,回到服务,去打开wampmysqld ,发现 "windows无法启动MySQL服务 错误1067" ,死活启动不了,咋办? ...

  4. mysql source 报错 Unknown command ‘\‘‘ 解决办法(本人的第一个博客嘿嘿)

    系统:Windows10 MySQL5.7.36通过source 导入数据总是报如下错误: ERROR: Unknown command '''. ERROR: Unknown command '&q ...

  5. MYSQL启动报错1053错误解决

    在网上有人说是服务的"登录"选项卡里要设置成administrator: 也有人说是要用DOS命令行使用 mysqld -nt remove mysqlservice和 mysql ...

  6. 常见主从复制报错处理案例

    文章目录 一.主从复制原理 1.开启主从复制的必要条件 2.主从复制的大致流程 二.基本排查手段 1.复制同步信息 2.数据库错误日志 3.系统日志 三.常见报错案例 3.1 Last_Errno - ...

  7. MySQL启动报错1067(附排查解决方法)

    MySQL启动报错1067,一般出现在刚装好数据库的时候,而且是用解压安装的方式安装的数据库 出现这个问题解决思路如下: 先去定位问题,接着删除MySQL服务,然后重新安装服务. 当出现服务错误的时候 ...

  8. mysql 复制 错误 1007_mysql5.7.24Gtid下主从复制报错1007

    一.配置mysql gtid下主从复制 master库192.195.1.131操作: [root@VM_82_178_centos ~]# mysql -e "grant replicat ...

  9. mysql full group by_MySql报错only_full_group_by的解决办法

    前段时间我在一个新环境里部署程序时遇到MySql报错only_full_group_by,之前已经遇到过一次同样的问题,当时没有总结经验,导致这次解决时耗费了不少时间,这里把本次的处理过程进行记录总结 ...

最新文章

  1. HTML服务器控件与Web服务器控件的区别[转]
  2. 解决linux中Kipmi0进程对CPU使用率很高问题
  3. 用递归调用法求斐波那契函数_进阶版:面试官问你斐波那契数列的时候不要高兴得太早...
  4. 物理学家杨振宁到底有多厉害?
  5. 1320A. Journey Planning
  6. 2021 最新 IDEA集成Gitee、Gitee迁移GitHub【图文讲解】
  7. 在React的render方法中使用箭头函数
  8. 大数据服务,至少有四点还值得存疑
  9. Java学习资料-Java容器
  10. Gram 矩阵及其主要性质
  11. acm中c语言标准输入输出,ACM竞赛之输入输出
  12. java混淆书籍介绍,第二代Java混淆器Allatori功能介绍教程资源
  13. 三星,现代,中颖,合泰,松翰等单片机定时器溢出计算公式
  14. CSS超链接标记大全
  15. STM32 之 HAL库
  16. SpringBoot之九重九阳神功
  17. OC block的回环引用
  18. 剑指offer——栈
  19. 浏览器网页缩放对页面的影响
  20. 从乔布斯卸任看苹果未来三年 会否半途而废?

热门文章

  1. GAT1400:视图库对象
  2. 2.合宙Air32F103_USART
  3. 终端或cmd配置git
  4. 一篇胎死腹中的Android文章——Dex文件结构解析
  5. 区块链的价值和未来趋势
  6. 国标消消乐---3.网络传输要求
  7. 抖音运营初期、中期、后期养号实操技巧和方法
  8. 基于MATLAB实现WSN(无线传感器网络)的LEACH(低能耗自适应集群层次结构)(Matlab代码实现)
  9. 基于Java+SpringBoot+Vue在线培训考试系统设计与实现
  10. 10 益智游戏——推箱子游戏