作者:余振兴
爱可生 DBA 团队成员,熟悉 Oracle、MySQL、MongoDB、Redis,最近在盘 TiDB,擅长架构设计、故障诊断、数据迁移、灾备构建等等。...事件背景
客户反馈在晚间数据跑批后,查询相关表的数据时,发现该表的部分数据在数据库中不存在,从应用跑批的日志来看,跑批未报错,且可查到日志中明确显示当时那批数据已插入到数据库中,需要帮忙分析这批数据丢失的原因...备注:考虑信息敏感性,以下分析场景测试环境模拟,相关数据做以下说明
涉及的库表为demo.t_dba_info表
丢失的数据为insert into t_dba_info(name,age) values...('zhenxing',20);这条记录
故障分析
1....,与客户确认跑批灌数据的逻辑,了解到会对该表做truncate,但由于误操作,在跑批开始后,又触发了一轮truncate行为,导致已经插入到该表的部分数据再次被清理了,也就导致了在解析binlog时部分记录丢失了