0

0

[MYSQL] 再遇1032主从不一致, 测试和生产一样的操作, 生产主从正常, 测试却主从异常

看不見的法師

看不見的法師

发布时间:2025-11-26 14:54:02

|

847人浏览过

|

来源于php中文网

原创

导读

前段时间遇到主从不一致,虽然找不到原因了, 但已修复. 然后最近又遇到一个主从不一致的案例, 而且生产做同样的操作主从就正常,测试就主从就不同步了; 好在这次找到原因了, 故分享分享

报错还是1032 Could not execute Update_rows event

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

[MYSQL] 再遇1032主从不一致, 测试和生产一样的操作, 生产主从正常, 测试却主从异常

如果是mts的话,这里看不到具体的表,只能看事务级别的信息.要看表的话,可以查询performance_schema.replication_applier_status_by_worker

[MYSQL] 再遇1032主从不一致, 测试和生产一样的操作, 生产主从正常, 测试却主从异常

分析过程

这个报错原因还是很简单的, 就是主从数据不一致. 那么原因呢?

初窥原因未果

常见的原因有如下:

从库有业务写入从库是只读的, 也没有业务连接, 故排除此选项搭建的时候主从就不一致搭建的时候是全库导出导入的, 数据是一致的. 故也排除.

常见的原因都未命中, 那应该就是主库存在未记录binlog的事务了. 也就是有"某人"设置了sql_log_bin=off, 而只有UPER, SYSTEM_VARIABLES_ADMIN or SESSION_VARIABLES_ADMIN privilege(s)权限的账号才能设置这个变量, 业务账号无此权限 现有环境只有root才有这个权限, 但root是不允许业务使用的.

再一次把路堵死了

再一次把路堵死了. 我们看下报错时间,发现是2025.11.dd hh:mm:ss, 之前数据一直是同步的, 而且延迟为0, 也就是说这一刻附近做了啥骚操作,导致主从数据不一致的; 查看下history,发现该时间点存在一个登录操作. 难道这就是内鬼? 咨询业务发现在该时间存在数据导入操作.

柳暗花明

我们知道高版本的mysqldump导出的'.sql'文件是有申明SET @@SESSION.SQL_LOG_BIN= 0;的, 也就是不记录binlog, 而从库未做数据导入操作, 那问题不就又结了么. 但开发说: 生产也是这样导入的啊, 主从都是正常的.

查看监控发现,生产导入时,存在大量binlog写入, 也就是生产导入的时候有写binlog.

怀疑生产是低版本,毕竟都会先升级测试后才会升级生产, 而且低版本确实存在写binlog的情况. 但遗憾的是生产测试版本均一致;且未发生过版本变动情况. 查看导入的'.sql'文件均发现存在SET @@SESSION.SQL_LOG_BIN= 0;

[MYSQL] 再遇1032主从不一致, 测试和生产一样的操作, 生产主从正常, 测试却主从异常

不但没找到原因, 还更离谱了, 生产导入的时候为啥会写binlog啊?

[MYSQL] 再遇1032主从不一致, 测试和生产一样的操作, 生产主从正常, 测试却主从异常

诶,生产是使用业务账号导入数据的啊, 那执行SET @@SESSION.SQL_LOG_BIN= 0;的时候应该会报错啊!

DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

下载
[MYSQL] 再遇1032主从不一致, 测试和生产一样的操作, 生产主从正常, 测试却主从异常

又一村

咨询开发发现, 生产导入的时候是使用的source xxx.sql方式导入的, 该方式是交互式的, 不会因为SET @@SESSION.SQL_LOG_BIN= 0;执行失败而终止, 和mysql --force 类似; 所以生产导入的时候未报错,且同步到从库去了.

查看测试发现, 测试使用的是root账号source导入的, 也就是SET @@SESSION.SQL_LOG_BIN= 0;执行成功了, 不会记录相关binlog.

也就是生产和测试操作是一样的, 但使用的账号不一致,导致生产主从正常,而测试主从异常.

总结

往小了说是: 操作账号不一致导致的主从数据不一致.

往大了说是: 操作不规范.

这次的情况但凡有一个操作不对, 都能提早发现的. 只能说这TM就是巧合!

[MYSQL] 再遇1032主从不一致, 测试和生产一样的操作, 生产主从正常, 测试却主从异常

参考:

https://dev.mysql.com/doc/refman/8.0/en/set-sql-log-bin.html

https://dev.mysql.com/doc/refman/8.0/en/system-variable-privileges.html

题外话

前段时间,有位大佬发现当对一张表多次修改row_format之后就无法判断是否是压缩的了. 参考sql

drop table if exists db1.t20251117;create table db1.t20251117(id int primary key, c1 int, c2 int, key(c1))row_format=dynamic;show create table db1.t20251117;alter table db1.t20251117 row_format=compressed KEY_BLOCK_SIZE=8;show create table db1.t20251117;alter table db1.t20251117 row_format=dynamic KEY_BLOCK_SIZE=0;show create table db1.t20251117;
[MYSQL] 再遇1032主从不一致, 测试和生产一样的操作, 生产主从正常, 测试却主从异常

有兴趣的可以分析分析这张表当前是否使用了压缩. (5.7环境)

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

676

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

320

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

346

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

1094

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

357

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

675

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

571

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

414

2024.04.29

c++主流开发框架汇总
c++主流开发框架汇总

本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

78

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 11.4万人学习

PHP自制框架
PHP自制框架

共8课时 | 0.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号