迁移真正困难的部分
系统迁移不只是把历史数据从 A 搬到 B。只要业务还在运行,就必须同时处理持续写入、模型差异、依赖方切换和异常恢复。
我通常拆成五个阶段
- 模型映射:明确字段转换、默认值和无法直接映射的数据;
- 存量回灌:任务支持分片、断点续传和幂等重试;
- 增量双写:让新数据同时进入两套系统,并持续对账;
- 灰度读流量:按业务维度逐步切换,保留快速回退开关;
- 观察与收口:确认差异、延迟和异常都处于可接受范围后再下线旧链路。
对账比迁移脚本更重要
对账需要覆盖数量、关键字段、关联关系和业务结果。只比较总行数通常不够,真正危险的是“数据存在但语义不一致”。
回退能力
迁移开始前就应该回答:如果某一步出现问题,能否停止、能否重放、能否切回旧系统。把回退当成方案的一部分,而不是事故发生后的临时操作。