在MySQL DBA 日常运维工作中,主从同步失败一定是会遇到的,最常见建是1032错误。

1032错误的主要原因是主库更新或者是删除的记录在从库上不存在引起的。

处理此种错误一般有两种思路:

1、直接跳过错误执行语句

2、找到错误执行语句,修复从库数据

第一种解决方案会有造成主从不一致的隐患(delete语句可以跳过),第二种是从根本上解决问题比较推荐

语句跳过操作方法如下:

--传统模式

mysql> stop slave;

#表示跳过一步错误,后面的数字可变

mysql> set global sql_slave_skip_counter =1;

mysql> start slave;

之后再用mysql> show slave status\G 查看:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

--GTID模式

mysql> stop slave;

通过show slave status\G;找到Retrieved_Gtid_Set:7800a22c-95ae-11e4-983d-080027de205a:10

mysql> set GTID_NEXT='7800a22c-95ae-11e4-983d-080027de205a:10 '

mysql> begin;commit;

mysql> set GTID_NEXT='AUTOMATIC';

mysql> start slave;

修复从库数据方法如下:

实验处理update错误步骤

主库:

mysql> select * from t1;

Empty set (0.00 sec)

mysql> set sql_log_bin=0;

Query OK, 0 rows affected (0.01 sec)

mysql> insert into t1 values (1,'aa');

Query OK, 1 row affected (0.01 sec)

mysql> insert into t1 values (2,'bb');

Query OK, 1 row affected (0.00 sec)

mysql> insert into t1 values (4,'dd');

Query OK, 1 row affected (0.02 sec)

mysql> insert into t1 values (5,'ee');

Query OK, 1 row affected (0.02 sec)

mysql> set sql_log_bin=1;

Query OK, 0 rows affected (0.00 sec)

mysql> insert into t1 values (3,'cc');

Query OK, 1 row affected (0.02 sec)

mysql> select * from t1;

+----+------+

| id | name |

+----+------+

|  1 | aaaa |

|  2 | bb   |

|  3 | cc   |

|  4 | dd   |

|  5 | ee   |

+----+------+

5 rows in set (0.00 sec)

从库:

mysql> select * from t1;

+----+------+

| id | name |

+----+------+

|  3 | cc   |

+----+------+

1 row in set (0.00 sec)

模拟故障:

主库:

mysql> update t1 set name = 'aaaa' where id=1;

Query OK, 1 row affected (0.11 sec)

Rows matched: 1  Changed: 1  Warnings: 0

从库:

mysql> show slave status\G;

Slave_IO_Running: Yes

Slave_SQL_Running: No

Last_Errno: 1032

Last_Error: Could not execute Update_rows event on table reptest.t1; Can't find record in 't1', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000009, end_log_pos 42303

单条故障处理:

根据Last_Error中提示的master log和end_log_pos的位置查找这条从库上缺失的数据

主库:

shell># mysqlbinlog -v --base64-output=decode-rows  --stop-position=42303   /data/mysql/mysql3306/logs/mysql-bin.000009 | tail -20

SET TIMESTAMP=1496988091/*!*/;

BEGIN

/*!*/;

# at 42198

#170609 14:01:31 server id 1003306  end_log_pos 42249 CRC32 0xfff09796     Table_map: `reptest`.`t1` mapped to number 240

# at 42249

#170609 14:01:31 server id 1003306  end_log_pos 42303 CRC32 0x67a63dd5     Update_rows: table id 240 flags: STMT_END_F

### UPDATE `reptest`.`t1`

### WHERE

###   @1=1

###   @2='aa'

### SET

###   @1=1

###   @2='aaaa'

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 into `reptest`.`t1` values (1,'aa');

从库:

mysql> insert into `reptest`.`t1` values (1,'aa');

Query OK, 1 row affected (0.01 sec)

mysql> start slave;

Query OK, 0 rows affected (0.03 sec)

mysql> show slave status\G;

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

此时故障已恢复,主从同步恢复正常。

可是如果有很多条不一致的,甚至涉及到多张表,如此处理就很费精力了,可以通过编写脚本来处理,数据库如果不大也可以重做。

出现1032错误之后,如果不是通过重做解决的,最好使用pt-table-checksum检查、pt-table-sync修复,pt工具都是需要在主从双yes的情况下才能使用。

mysql 1032_mysql主从同步错误Last_SQL_Errno: 1032处理分析相关推荐

  1. mysql 1032_MySQL 报错 Last_SQL_Errno: 1032

    MySQL 报错 Last_SQL_Errno: 1032 show slave status \G Last_SQL_Errno: 1032 Last_SQL_Error: Could not ex ...

  2. mysql 1032_MySQL数据库之MySQL 报错 Last_SQL_Errno: 1032

    本文主要向大家介绍了MySQL数据库之MySQL 报错 Last_SQL_Errno: 1032 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. MySQL 报错 Last_SQ ...

  3. mysql报1032_MySQL SQL_ERROR 错误号 1032解决办法

    1032错误码说明: MySQL主从同步的1032错误,一般是指要更改的数据不存在,SQL_THREAD提取的日志无法应用故报错,造成同步失败 (Update.Delete.Insert一条已经del ...

  4. MYSQL主从不同步延迟原理分析及解决方案

    MYSQL主从不同步延迟原理分析及解决方案 参考文章: (1)MYSQL主从不同步延迟原理分析及解决方案 (2)https://www.cnblogs.com/shishanyu/p/7977835. ...

  5. MySQL 常见主从延迟原因分析

    MySQL 常见主从延迟原因分析 更新时间:2022-10-30 文章目录 MySQL 常见主从延迟原因分析 MySQL 主从复制简介 主从延迟时间计算方式 主从延迟问题影响 常见主从延迟原因分析 M ...

  6. mysql 1236_Mysql主从同步Last_IO_Errno:1236错误解决方法

    Mysql主从同步的Last_IO_Errno:1236错误是什么原因呢,我们要如何来解决这个问题呢?下面和小编一起来看看关于此问题的记录与解决办法. 从服务器错误代码: Last_IO_Errno: ...

  7. Linux下MySQL数据库主从同步配置

    操作系统:CentOS 6.x 64位 MySQL数据库版本:mysql-5.5.35 MySQL主服务器:192.168.21.128 MySQL从服务器:192.168.21.129 准备篇: 说 ...

  8. Mysql Docker 主从配置

    Mysql Docker 主从配置 操作系统:Windows10 使用的MySQL8.0的docker镜像 总览 前置环境说明     首先在系统中起了一个MySQL8.0的docker镜像,并在其中 ...

  9. MySQL的主从配置+SpringBoot的MySQL读写分离配置

    MySQL的主从复制 点击前往查看MySQL的安装 1.主库操作 vim /etc/my.cnf 添加如下配置 log-bin=mysql-bin #[必须]启用二进制日志 server-id=128 ...

最新文章

  1. iOS 关于Blocks
  2. wifi漫游测试过程
  3. Docker User Guide
  4. Linux——Linux下的tar压缩解压缩命令详解
  5. 【OpenCV/C++】KNN算法识别数字的实现原理与代码详解
  6. 第一次敲hdu蟠桃树和第二次的区别
  7. c语言程序设计书张成叔万芳,TP312C-C语言程序设计 张成叔.pdf
  8. 蓝桥杯c语言用什么编译软件,蓝桥杯c语言软件大赛
  9. 美容院店务管理系统帮助门店管理哪些方面 ?
  10. 2009-2021网络规划设计师论文题汇总
  11. filp/whoops
  12. 【MySQL】汇总数据
  13. lr_think_time()
  14. vitualbox 挂载win7 共享文件夹
  15. mpu6050详细c语言程序,mpu6050详细C语言知识程序.doc
  16. 幕维动画——港珠澳大桥岛隧三维动画
  17. 【深度学习不是犯罪】欧盟祭出最严数据保护法:专家解读 GDPR
  18. 基于MDK开发的TencentOS-Tiny软件包,快速移植物联网操作系统到Keil中!
  19. 微软推出三维立体地图搜索(3-D City Live Search)
  20. 首款中文渗透测试专用Linux系统—MagicBox

热门文章

  1. 学术之声 | 专访北航教授洪晟:区块链应该管也能够管,而且要学会管
  2. 第10课:《ChatGPT提示工程》—— Guidelines(入门)
  3. linux 排查cpu负载过高原因
  4. ios11对比android8.0,谁的设计更好?iOS11正式版多图详尽对比安卓8.0
  5. 【人脸识别】基于 Gabor+SVM和PCA+SVM实现人脸识别matlab源码含 GUI
  6. 什么缩写是mzj_mzjh是什么意思,mzjh缩写代表什么意思,mzjh是什么含义
  7. python web py入门(6)-webpy在模板里使用code代码段错误的问题
  8. EDM系统看板多邮件模板邮箱配置地址簿​EDM营销推送邮件系统开发
  9. 软件工程实践2018第四次作业——团队展示
  10. HTML基础-02:常用布局