← 中文资源

简体中文版本

数据库迁移发布门禁工作流

以可向后兼容、能在代码部署前后运行且不破坏任一版本的迁移作为发布门禁。

阅读英文原文

目标

发布期间数据库迁移必须同时兼容新旧两个应用版本。本工作流先对迁移分类(扩容、收缩或破坏性),先部署扩容阶段只加列加表,随后发布使用新结构的新代码,待新版本稳定后再单独执行收缩阶段删除废弃列,从而让回滚始终可行。

步骤要点

  1. 对迁移分类并明确阶段计划。
  2. 先部署只增不删的扩容阶段。
  3. 发布使用新结构的新代码。
  4. 新版本稳定后再执行收缩阶段。
-- expand phase
ALTER TABLE orders ADD COLUMN note text;
-- contract phase (later release)
ALTER TABLE orders DROP COLUMN legacy_note;

验证

按顺序执行上述步骤后,逐项确认每个步骤的预期状态均已满足;只有全部预期状态成立,才认为本流程完成。若某一步未达到预期状态,应先按排错提示排查,不要跳过继续,以免掩盖问题。

排错提示

  • 同一发布做破坏性变更会阻断回滚。
  • 就地改名会在滚动期间破坏旧 Pod。
  • 收缩过早会删除旧版本仍需要的数据。

适用边界

  • 需要带版本跟踪的迁移工具。
  • 预发数据应接近生产。