网站优化

网站优化

Products

当前位置:首页 > 网站优化 >

为何测试环境主从同步出现1032错误,而生产环境却正常?

GG网络技术分享 2026-04-15 16:33 1


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

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

-- sql

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

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

相关产品对比

产品 功能 价格
MySQL Enterprise Edition 高级平安、 审计、备份 $750/年
Percona Server for MySQL 性能增强、监控 免费
MariaDB Enterprise 企业级支持、平安 $1200/年

记住... 有兴趣的可以分析分析这张表当前是否使用了压缩.

咨询开发发现, 生产导入的时候是使用的source xxx.sql方式导入的, 该方式是交互式的, 不会主要原因是SET @@SESSION.SQL_LOG_BIN= 0;施行失败而终止, 和mysql --force 类似; 所以生产导入的时候未报错,且同步到从库去了. 查看测试发现, 测试使用的是root账号source导入的, 也就是SET @@SESSION.SQL_LOG_BIN= 0;施行成功了, 不会记录相关binlog. 也就是生产和测试操作一样的, 但使用的账号不一致,导致生产主从正常,而测试主从异常.

问题根源

往小了说是: 操作账号不一致导致的主从数据不一致. 往大了说是: 操作不规范.,简直了。 这次的情况但凡有一个操作不对,都能提早发现的。只能说这… 这真是个让人抓狂的问题,杀疯了!!

关于MySQL 主从复制


紧急排查与临时解决方案

重要提示: 跳过错误只能作为临时解决方案!切勿滥用!

-- 如果还去施行跳过错误操作, 主从恢复同步...但这并不能解决问题!

进一步分析

- - - - - - - - - - - 分割线啦! 官宣。 - - - - - - - -- - 注意看我哟!

如果你的数据库正在使用MTS,那么你可能看不到具体的表信息
要查看具体的表信息需要查询performance__applier_status_by_worker
这个表格里包含了每个worker线程处理的具体表的信息
但是如果你的数据库没有开启MTS或者配置有问题那么你可能看不到这个表格
所以建议检查一下你的数据库是否开启MTS以及配置是否正确
你可以通过SHOW GLOBAL VARIABLES LIKE 'slave_parallel_workers';来查看当前的MTS配置
如果返回的值为NULL或者为0那么说明你的数据库没有开启MTS
如果是这样的话你需要修改my.cnf配置文件然后重启数据库来开启MTS
请注意开启MTS可能会对数据库性能产生一定的影响所以请谨慎使用
  • 网络问题
  • 服务器资源不足
  • binlog日志损坏
  • SQL语句语法错误
  • 主从服务器版本不兼容

推荐阅读

  • 如何优化MySQL主从复制性能
  • MySQL复制原理详解
  • 如何诊断和解决MySQL复制问题

相关案例

最近有位朋友遇到了类似的问题他的情况是:
  • 在master上更新了一条记录
  • slave上找不到这条记录
  • 导致复制中断并报出1032错误
经过排查发现原因是:在slave上误删除了这条记录导致的

解决方案

  • 先说说需要找到被删除记录的主键ID
  • 然后在master上找到这条记录的数据
  • 再说说将这条记录插入到slave上即可恢复复制
希望本文能够帮助你解决MySQL主从复制遇到的1032错误问题记住排查问题的关键在于找到问题的根源并采取正确的解决方案祝你顺利解决问题!
作为一个DBA我经常遇到各种各样的问题有时候真的是让人崩溃不过只要坚持下去总能找到解决办法的加油!💪💪💪
  • MySQL官方文档:
  • Percona Wiki:
  • Stack Overflow:


提交需求或反馈

Demand feedback