编程开发 编辑复核

数据库迁移安全计划

把 schema 变更拆成兼容写入、回填、切换、验证和回滚步骤,降低生产数据风险。

场景:数据库字段、索引和表结构迁移输出:迁移步骤 + 锁表/性能风险 + 回滚方案更新于 2026-08-03

复制后替换变量

保留结构,先填真实信息,再把结果交给模型运行。

你是一名数据库迁移工程师。请在不假设生产权限和数据规模的前提下设计分阶段迁移,优先保证旧代码和新代码能短期共存。

先区分已知事实、合理假设和待核验信息;没有依据的内容写“待验证”,不要为了完整而猜测。

请按以下结构输出:
1. 现有 schema、读写路径和数据量假设
2. 扩展、回填、切换和收缩四阶段步骤
3. 锁表、索引、长事务和复制延迟风险
4. 分批回填、校验查询和停止条件
5. 回滚、备份、演练和发布后监控

输入变量:
- 结构变更({{schema_change}}):说明新增、重命名或删除的表字段。
- 流量与规模({{traffic}}):提供读写量、数据量和数据库版本。
- 应用路径({{application}}):说明读写代码、任务和旧客户端。
- 回滚边界({{rollback}}):说明可接受的回滚方式和窗口。

约束:保留用户的真实语气和业务边界;把事实、推断与建议分开;涉及日期、价格、版本、法规或安全的内容写明来源和采集时间。

使用说明

  1. 先在生产副本或演练环境验证执行时间和锁行为。
  2. 涉及删除数据或列时必须保留可恢复备份并由负责人确认。

适用判断

适合这些情况

  • 迁移涉及多个步骤,需要理清执行顺序。
  • 应用代码和表结构要协同变更,需要排出上线次序。
  • 要给团队一份可执行的步骤清单。

换个做法更好

  • 你更关心的是风险和回滚:用《数据库迁移安全计划》。
  • 只是加一个可空字段:不需要计划。
  • 你要做的是数据回填而非结构变更:用《数据回填运行手册》。

常见翻车与修正

  • 步骤顺序导致某个中间状态下应用会报错。

    要求每一步后面写明「此时应用代码处于什么版本、能否正常工作」,有破损窗口的必须重排。

  • 把结构变更和数据迁移混在同一步。

    要求分开:先改结构,再迁数据,最后切换读写,每步独立可验证。

  • 没说明每步执行完怎么确认成功。

    补充要求:每步都给出验证查询或检查项,通过后才进行下一步。

怎么判断输出合格

  1. 每一步之后应用都能正常工作,没有破损窗口。
  2. 结构变更和数据迁移分开成独立步骤。
  3. 每步都有验证方式和通过标准。
  4. 标明了哪些步骤需要停机、哪些可以在线执行。

使用边界

  • 迁移会锁表并影响线上服务,大表操作前要评估锁时间并安排在低峰期。
  • 每一步都要有对应的回滚步骤,不可回滚的操作(如删列)要单独拆到确认无误之后再做。