数据迁移怎么审
数据迁移评审围绕四件事:脚本是否可重入(失败后重跑安全)、大表变更的锁与耗时是否评估过、新旧代码与新旧数据格式是否有兼容窗口、回滚方案是否真的演练过。不可逆操作(删列、改类型)必须给出暂停点与备份策略,评审时逐项确认。
基本信息
| 可重入 | 失败后重跑不会产生重复数据或错误状态 |
|---|---|
| 锁与时长 | 大表结构的变更与批量更新对线上影响有评估与分批方案 |
| 兼容窗口 | 先扩后缩:新旧结构与新旧代码在一段时间内并存 |
| 回滚 | 脚本、备份点与预计恢复时长都提前准备好 |
逐项看什么
- 脚本是否幂等:重复执行的判断条件写清楚了吗。
- 分批执行:大表更新是否按主键区间或时间窗口分批,避免长事务。
- 锁影响:结构变更是否会阻塞写入,是否选择低峰期执行。
- 兼容窗口:旧代码在新增字段或新表结构下能否继续运行。
- 双写与校验:迁移期间是否双写并抽样比对一致性。
- 回滚点:备份位置、恢复方式与预计耗时是否明确。
先扩后缩的步骤
| 阶段 | 动作 | 可回滚性 |
|---|---|---|
| 扩展 | 新增字段或新表,旧逻辑不受影响 | 可直接回滚代码 |
| 双写 | 新旧结构同时写入,读仍走旧结构 | 可停双写 |
| 切换读 | 读路径切到新结构,保留旧数据 | 可切回旧读路径 |
| 清理 | 确认稳定后删除旧字段与兼容代码 | 需要备份支撑 |
迁移前的核对项
迁移前的核对项
# 1. 脚本能否重复执行?失败后重跑会怎样
# 2. 预计执行时长与锁等待时间是多少,是否在低峰期
# 3. 新结构下旧代码是否仍可运行
# 4. 一致性如何校验:抽样比对还是全量统计
# 5. 回滚脚本与备份点在哪里,恢复预计多久不可逆迁移(删列、改类型)必须给出暂停点与备份策略,评审时逐项确认。
在类生产数据量上试跑一次:记录耗时与锁等待,比在会议里估算可靠得多。