事件情况:
1. 业务经常发现某个表数据莫名消失,反复重新导入多次,还会重现,一开始以为是某人误操作
2. 直到当日上午刚导完数据,下午数据就消失了,这时call运维介入调查
运维介入调查过程:
1. 获取数据消失期间的binlog
2. 逐条分析日志,发现从上午导入完成后,直到介入调查为止,只有灵星几条删除日志;
3. 一开始以为是mysql 5.6的binlog日志比较特殊,row级别变更没有用sql记录,发现不是
4. 从mysql error日志中没有发现,系统错误日志中没有发现,排除因为系统故障导致数据回滚;
5. 从外键约束角度检查,发现关联表用 foreign key references 到主表 on delete cascade
6. 在关联表数据更新完毕时间点之后,发现有批量更新主表数据的sql,初步判断是因为批量更新主表时,导致关联表数据被自动删除;
结论:由于外键约束导致的关联表数据更新,不会有binlog产生