Documentation
README
数据库迁移模式(Database Migration Patterns)
面向生产系统的安全、可逆的数据库模式变更(Schema Changes)。
激活时机
- 创建或修改数据库表
- 添加/删除列或索引
- 执行数据迁移(数据回填 backfill、转换 transform)
- 规划零停机(zero-downtime)模式变更
- 为新项目设置迁移工具链
核心原则
- 所有变更皆为迁移 —— 严禁手动修改生产环境数据库
- 生产环境仅向前迁移 —— 回滚需使用新的向前迁移(forward migrations)
- 模式迁移与数据迁移分离 —— 严禁在一次迁移中混用 DDL 和 DML
- 针对生产规模数据进行测试 —— 在 100 行数据上正常的迁移可能会导致 1000 万行数据锁表
- 部署后的迁移不可变 —— 严禁编辑已在生产环境运行过的迁移文件
迁移安全核查表(Migration Safety Checklist)
在执行任何迁移之前:
- 迁移包含 UP 和 DOWN 脚本(或明确标记为不可逆)
- 对大表不执行全表锁(使用并发操作)
- 新列具有默认值或可为空(严禁添加不带默认值的 NOT NULL)
- 索引并发创建(对于现有表,不与 CREATE TABLE 同行执行)
- 数据回填与模式变更分为独立迁移
- 已针对生产数据副本进行测试
- 已记录回滚方案
PostgreSQL 模式
安全地添加列
This is the opening of the README. Read the full README on GitHub.