为何测试环境主从同步出现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 主从复制
紧急排查与临时解决方案
重要提示: 跳过错误只能作为临时解决方案!切勿滥用!
-- 如果还去施行跳过错误操作, 主从恢复同步...但这并不能解决问题!
进一步分析
- - - - - - - - - - - 分割线啦! 官宣。 - - - - - - - -- - 注意看我哟!
- 网络问题
- 服务器资源不足
- binlog日志损坏
- SQL语句语法错误
- 主从服务器版本不兼容
推荐阅读
- 如何优化MySQL主从复制性能
- MySQL复制原理详解
- 如何诊断和解决MySQL复制问题
相关案例
- 在master上更新了一条记录
- slave上找不到这条记录
- 导致复制中断并报出1032错误
解决方案
- 先说说需要找到被删除记录的主键ID
- 然后在master上找到这条记录的数据
- 再说说将这条记录插入到slave上即可恢复复制
- MySQL官方文档:
- Percona Wiki:
- Stack Overflow:

前段时间,有位大佬发现当对一张表多次修改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 主从复制
紧急排查与临时解决方案
重要提示: 跳过错误只能作为临时解决方案!切勿滥用!
-- 如果还去施行跳过错误操作, 主从恢复同步...但这并不能解决问题!
进一步分析
- - - - - - - - - - - 分割线啦! 官宣。 - - - - - - - -- - 注意看我哟!
- 网络问题
- 服务器资源不足
- binlog日志损坏
- SQL语句语法错误
- 主从服务器版本不兼容
推荐阅读
- 如何优化MySQL主从复制性能
- MySQL复制原理详解
- 如何诊断和解决MySQL复制问题
相关案例
- 在master上更新了一条记录
- slave上找不到这条记录
- 导致复制中断并报出1032错误
解决方案
- 先说说需要找到被删除记录的主键ID
- 然后在master上找到这条记录的数据
- 再说说将这条记录插入到slave上即可恢复复制
- MySQL官方文档:
- Percona Wiki:
- Stack Overflow:

