1032错误码说明:

MySQL主从同步的1032错误,一般是指要更改的数据不存在,SQL_THREAD提取的日志无法应用故报错,造成同步失败

(Update、Delete、Insert一条已经delete的数据)。

1032的错误本身对数据一致性没什么影响,影响最大的是造成了同步失败、同步停止。

如果主主(主从)有同步失败,要第一时间查看并着手解决。因为不同步,会造成读取数据的不一致。应在第一时间恢复同步,

尽量减少对业务的影响。然后再具体分析不同步的原因,手动或者自动修复数据,并做pt-table-checksum数据一致性检查。

报错信息如下:

Slave_SQL_Running: NO

Last_SQL_Errno:1032Last_SQL_Error: Worker3 failed executing transaction '' at master log mysql-bin.000003, end_log_pos 440267874;

Could not execute Delete_rowsevent on table db_test.tbuservcbgolog; Can't find record in'tbuservcbgolog', Error_code: 1032;

handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000003, end_log_pos 440267874

从上可以看出,是SQL_THREAD线程出错,错误号码1032。是在应用delete db_test.tbuservcbgolog 表中一行数据的事件时,由于这条数据

不存在而出错。此事件在主服务器Master binlog中的位置是 mysql-bin.000003, end_log_pos 440267874。(当然可以在从服务器Slave的Relay

log中查找,具体方法见最后)

方法1:跳过错误Event

先跳过这一条错误(event),让主从同步恢复正常。(或者N条event,一条一条跳过)

stop slave;

set global sql_slave_skip_counter=1;

start slave;

执行上面命令会报错

mysql> set global sql_slave_skip_counter=1;

ERROR 1858 (HY000): sql_slave_skip_counter can not be set when the server is running with @@GLOBAL.GTID_MODE = ON. Instead, for each transaction that you want to skip, generate an empty transaction with the same GTID as the transaction

解决问题过程:

分析出现问题时候GTID值

通过分析法获取gtid值

通过查看mysql> show slave status \G;

查看一下信息并记录下来:

Retrieved_Gtid_Set: 8f9e146f-0a18-11e7-810a-0050568833c8:1-4  --跳过此事务

Executed_Gtid_Set: 8f9e146f-0a18-11e7-810a-0050568833c8:1-3

通过上面的信息可以知道已经执行的gtid是8f9e146f-0a18-11e7-810a-0050568833c8:1-3,准备要执行8f9e146f-0a18-11e7-810a-0050568833c8:4的时候出问题了,所以条跳过此步骤

解决方法一:重置master方法跳过错误

mysql>  STOP SLAVE;

mysql> RESET MASTER;

mysql>   SET @@GLOBAL.GTID_PURGED ='8f9e146f-0a18-11e7-810a-0050568833c8:1-4'

mysql>  START SLAVE;

解决方法二:使用pt-slave-restart工具

pt-slave-restart工具的作用是监视某些特定的复制错误,然后忽略,并且再次启动SLAVE进程(Watch and restart MySQL replication after errors)。

忽略所有1062错误,并再次启动SLAVE进程

[root@dgt mysql]# pt-slave-resetart -S /var/lib/mysql/mysql.sock —error-numbers=1062

检查到错误信息只要包含 test.t1,就一概忽略,并再次启动 SLAVE 进程

[root@dgt mysql]# pt-slave-resetart -S /var/lib/mysql/mysql.sock  —error-text=”test.t1”

方法2:跳过所有1032错误

更改my.cnf文件,在Replication settings下添加:

slave-skip-errors = 1032

并重启数据库,然后start salve。

注意:因为要重启数据库,不推荐,除非错误事件太多。

方法3:还原被删除的数据

根据错误提示信息,用mysqlbinlog找到该条数据event SQL并逆向手动执行。如delete 改成insert。

本例中,此事件在主服务器Master binlog中的位置是 mysql-bin.000003, end_log_pos 440267874。

1)利用mysqlbinlog工具找出440267874的事件

/usr/local/mysql-5.6.30/bin/mysqlbinlog --base64-output=decode-rows -vv mysql-bin.000003 |grep -A 20 '440267874'

或者/usr/local/mysql-5.6.30/bin/mysqlbinlog --base64-output=decode-rows -vv mysql-bin.000003 --stop-position=440267874 | tail -20

或者usr/local/mysql-5.6.30/bin/mysqlbinlog --base64-output=decode-rows -vv mysql-bin.000003 > decode.log

( 或者加上参数-d, --database=name 来进一步过滤)

#160923 20:01:27 server id 1223307 end_log_pos 440267874 CRC32 0x134b2cbc Delete_rows: table id 319 flags: STMT_END_F

### DELETE FROM `db_99ducj`.`tbuservcbgolog`

### WHERE

### @1=10561502 /* INT meta=0 nullable=0 is_null=0 */

### @2=1683955 /* INT meta=0 nullable=0 is_null=0 */

### @3=90003 /* INT meta=0 nullable=0 is_null=0 */

### @4=0 /* INT meta=0 nullable=0 is_null=0 */

### @5='2016-09-23 17:02:24' /* DATETIME(0) meta=0 nullable=1 is_null=0 */

### @6=NULL /* DATETIME(0) meta=0 nullable=1 is_null=1 */

# at 440267874

以上为检索出来的结果,事务语句为:delete from db_99ducj.tbuservcbgolog where @1=10561502 and @2=1683955 ...

其中@1 @2 @3...分别对应表tbuservcbgolog的列名,填补上即可。

我们可以逆向此SQL 将deleter 变成Insert,手动在从库上执行此Insert SQL,之后restart slave就好了。

mysql报1032_MySQL SQL_ERROR 错误号 1032解决办法相关推荐

  1. 方舟服务器网络信息错误,明日方舟网络安全配置初始化失败请重试\n错误号-1解决办法...

    在明日方舟开启第五章的今天,不少玩家都遇到了"网络安全配置初始化失败,请重试\n错误号-1"这样的问题,下面就跟小编一起去看看网络安全配置初始化失败,请重试\n错误号-1解决方法吧 ...

  2. Spring Boot连接MySQL报错“Internal Server Error”的解决办法

    报错信息如下: {timestamp: "2018-06-14T03:48:23.436+0000", status: 500, error: "Internal Ser ...

  3. mysql 1032_[MySQL] SQL_ERROR 1032解决办法

    一.缘由: 在主主同步的测试环境,由于业务侧没有遵循同一时间只写一个点的原则,造成A库上删除了一条数据,B库上在同时更新这条数据. 由于异步和网络延时,B的更新event先到达A端执行,造成A端找不到 ...

  4. 连接mysql报zone时区错误

    连接mysql报zone时区错误 报错信息: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more ...

  5. mysql报08S01的错误- SQL Error: 0, SQLState: 08S01 偶发

    mysql报08S01的错误- SQL Error: 0, SQLState: 08S01 偶发 后台res回来的值为: {"error_code":"UNKNOWN&q ...

  6. mysql出现1499错误_连接MySQL时出现1449与1045异常解决办法

    连接MySQL时出现1449与1045异常解决办法 mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解 ...

  7. oracle错误号大全(查询ora错误号以及解决方法技巧)

    oracle 查询ora错误号以及解决方法技巧 racle 错误号以及解决方法技巧 经常有朋友问我ORACLE 类似ora-00109 错误的信息,其实我们的ORACLE系统本身已经为我们详细的说明了 ...

  8. Mysql错误1366的解决办法:Incorrect string value: '\xF0\x9F...' for column 'XXX' at row 1

    Mysql错误1366的解决办法:Incorrect string value: '\xF0\x9F...' for column 'XXX' at row 1 原因是UTF-8编码有可能是两个.三个 ...

  9. mysql报08s01的错误_MYSQL报08S01的异常

    mysql报08S01的错误 - SQL Error: 0, SQLState: 08S01 - Communications link failure The last packet sent su ...

最新文章

  1. 干货|《深度学习入门之Pytorch》资料下载
  2. 最后一场「屏之争」:汽车大佬与硅谷巨头的贴身肉搏
  3. TENSORFLOW PROCESS FINISHED WITH EXIT CODE -1073741819 (0XC0000005)
  4. 程序包 javax.servlet 不存在 解决办法
  5. 全新的 flow.ci Dashboard 上线
  6. mongodb连接失败_MongoDB 基础入门
  7. 上顿号符号_上顿号符号_标点符号(1):谈谈顿号的用法
  8. LeetCode meituan-006. 小团的神秘暗号
  9. 嘉年华回顾丨 尚博带你了解腾讯 TXSQL如何 赋能腾讯云分布式数据库 CynosDB
  10. day27 粘包及粘包的解决方案
  11. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_08 转换流_5_InputStreamReader介绍代码实现...
  12. 编码规约学习——《阿里巴巴 Java 开发手册》
  13. STM32片上Flash读写的一些重要知识
  14. [Unity3d] [图文]【寻路】 Waypoint 与 NavMesh 比较(转)
  15. centos树莓派版本安装ssh_树莓派安装系统+ssh登录
  16. 苹果12轻点背面不灵敏如何解决
  17. nsfw什么颜色_“ NSFW”是什么意思,以及如何使用它?
  18. Caffe 作者贾扬清:我为什么离开 Google,加入 Facebook?
  19. 开发落网电台windows phone 8应用的计划(6)
  20. 旧书交易系统——第一次报告

热门文章

  1. boss金服:点买系统的基本解答
  2. 不能忍!花钱买网站VIP账号别人在用?
  3. 使用element UI 验证时vaild总是false
  4. 深度报道 | 5G兵临城下:AIoT将面临哪些变革和挑战?
  5. angular检测ie浏览器,并给用户提示
  6. 2008-2020年800+商业银行财务面板数据
  7. iOS企业签名过程中APP频繁出现闪退是什么原因?
  8. 私厨菜谱app的设计与实现(三)
  9. 收藏随身查,光纤光缆60条必备知识!
  10. python宣传海报_用Python做一个令人发疯的海报