首页/开发/CI/CD 与发布速查/数据库变更的回滚策略
质量门禁与回滚51 条

数据库变更的回滚策略

数据库没有一键回滚:策略以向前兼容为目标,先扩展后收缩、变更与应用发布解耦,并准备回退脚本、确认备份可用。

CI/CD 与发布速查开发更新于 2026-10-12
常用路径扩展(加字段或表)→ 双写与回填 → 切换读取 → 收缩(清理旧结构)
回退脚本每次迁移准备 down 脚本并演练
数据修复DML 失误用备份或闪回,先冻结写入再处理
验证回滚后跑数据一致性校验

扩展与收缩的版本节奏

扩展与收缩的版本节奏
V1 加可空字段           旧代码不受影响
V2 回填并双写
V3 读取切换到新字段
V4 删除旧字段(确认无回退需求后)
破坏性变更(DROP、TRUNCATE)前必须确认备份完成且可恢复,并安排在收缩阶段后期执行。

易错点

  • 迁移与应用发布同批次执行:回滚应用时数据库已变,两端不兼容
  • 没有预演:迁移在生产首次执行才暴露锁表与语法问题

数据来源与参考

  • Martin Fowler《ParallelChange》
  • Prisma 文档(Expand and Contract Pattern)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌