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

前段时间,有位大佬发现当对一张表多次修改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. 也就是生产和测试操作是一样的, 但使用的账号不一致,导致生产主从正常,而测试主从异常.
往小了说是: 操作账号不一致导致的主从数据不一致. 往大了说是: 操作不规范.,简直了。 这次的情况但凡有一个操作不对,都能提早发现的。只能说这… 这真是个让人抓狂的问题,杀疯了!!
重要提示: 跳过错误只能作为临时解决方案!切勿滥用!
-- 如果还去施行跳过错误操作, 主从恢复同步...但这并不能解决问题!
- - - - - - - - - - - 分割线啦! 官宣。 - - - - - - - -- - 注意看我哟!
Demand feedback