1背景
A表数据需要迁移到B表, 表字段有新增修改,并且一条A记录可能会对应多条B记录。两个表都有名称和对应的编码(每次新增新生成),如果B表已存在此名称,则不同步。
2迁移方案
分页查询A表(A表主键排序),并根据相关条件封装好B表数据,并同步插入。
3问题描述原因
1由于此次发布,B表依赖涉及到一个监听的mq会全量推数据,两方未及时沟通。需要A B表同步完数据,上游MQ才能推送。
2A表同步B表数据期间,有用户操作新增(以为凌晨2点不会有人操作),导致A表老数据不能同步。同一个名称 在A B表对应不同的编码,导致其他业务表引用编码有新的 旧的,旧的不能正常展示。
3未考虑到A表本来有一批脏数据。
4解决方案
1找出A B表 两边编码不一样,名称一样的记录。
2B表以旧的编码为准,新的编码标识改为已删除。已应用新编码的业务表记录改为对应的旧编码。
3清缓存
4推搜索
5再次查询确认是否存在A B表 两边编码不一样,名称一样的记录。
5总结
经过这次数据迁移出现的问题,根本原因在于自己考虑场景不全,上下游沟通不到位导致,同时应该对现有线上数据进行分析。系统需要设计个开关及公告,需要数据迁移时提前几天通知用户,数据迁移时并禁用相关功能。
惭愧不已,特意记录下来。