数据库 Schema 迁移怎么做:安全、可回滚、可验证
副标题 / 摘要 数据库 Schema 迁移是系统风险的高发点。本文给出可执行的迁移策略与检查清单。 目标读者 需要做数据库迁移的工程师 负责上线流程与稳定性的团队 做 DevOps / DBA 的开发者 背景 / 动机 很多线上事故来自“不可逆的 schema 变更”。 正确做法是分阶段、可回滚、可验证。 核心概念 前向兼容:新旧代码同时可用 可回滚:变更可撤销 灰度发布:逐步流量切换 迁移顺序:先扩展、后收缩 实践指南 / 步骤 先扩展再收缩(add column -> backfill -> cutover -> drop) 双写验证(新旧字段一致) 可回滚脚本 灰度切换 迁移后验证(行数/校验和) 可运行示例 -- 1) 扩展 ALTER TABLE users ADD COLUMN status_new VARCHAR(20); -- 2) 回填 UPDATE users SET status_new = status; -- 3) 切换代码使用新字段 -- 4) 收缩 ALTER TABLE users DROP COLUMN status; 解释与原理 “先扩展后收缩”能保证新旧版本共存,避免停机与回滚困难。 迁移过程中的双写与校验是降低风险的关键。 ...