目标
发布期间数据库迁移必须同时兼容新旧两个应用版本。本工作流先对迁移分类(扩容、收缩或破坏性),先部署扩容阶段只加列加表,随后发布使用新结构的新代码,待新版本稳定后再单独执行收缩阶段删除废弃列,从而让回滚始终可行。
步骤要点
- 对迁移分类并明确阶段计划。
- 先部署只增不删的扩容阶段。
- 发布使用新结构的新代码。
- 新版本稳定后再执行收缩阶段。
-- expand phase
ALTER TABLE orders ADD COLUMN note text;
-- contract phase (later release)
ALTER TABLE orders DROP COLUMN legacy_note;
验证
按顺序执行上述步骤后,逐项确认每个步骤的预期状态均已满足;只有全部预期状态成立,才认为本流程完成。若某一步未达到预期状态,应先按排错提示排查,不要跳过继续,以免掩盖问题。
排错提示
- 同一发布做破坏性变更会阻断回滚。
- 就地改名会在滚动期间破坏旧 Pod。
- 收缩过早会删除旧版本仍需要的数据。
适用边界
- 需要带版本跟踪的迁移工具。
- 预发数据应接近生产。