数据迁移
背景
两个系统之间的数据积分数据的迁移,包含所属公司、用户、场景、规则、积分、流水。
两个数据的表结构,接口,逻辑,完全不同。所以需要重新将表数据整理,分步插入新系统的库中。
思路拆分
1. 首先确定在迁移阶段哪一部分数据是固定的,或者可控的,哪一部分是实时变化的。
1. 固定数据:公司不变、用户数量可控不变、场景可控不变、规则可控不变。
2. 变动数据:用户在实时消费积分,实时产生流水。
2. 对固定数据整体进行迁移。
3. 分批关闭公司消费入口,做友好提示。在该时间段内对公司内用户的积分、流水进行迁移。
4. 迁移后,对原系统数据进行清理,可加备注逻辑删除,开启消费入口。
5. 迁移后,发生老订单的退款,先退到旧系统,然后定时任务同步到新系统。
数据存储媒介
- ES 存储消费流水。
- mongodb存储迁移日志。
- 数据库存储整体迁移的数据。
- redis存储频繁查询的数据。
技术细节
- 对固定数据迁移,数据量太大。按需分批次将数据查出来放入内存,将数据再分拆成多个批次,多线程异步执行。
- 将一些常用数据,先查出来,放入缓存供后续使用,避免频繁读库。
注意事项
1. 先把整体迁移架构设计出来,整体无误后再编码。
2. 将迁移过的维度数据(公司)放入redis缓存,避免重复迁移。
3. 迁移数据与原数据要有对应关系,供后续验证。
4. 记录迁移日志,每笔迁移都后续可查。
5. 对原系统数据不可物理删除,要保留原底数据。
6. 对异常情况,终止迁移,记录异常情况。