← 中文资源

简体中文版本

规划模式迁移回滚

设计可无损回滚的数据库迁移,在副本上演练、测量锁影响,并让新旧应用版本在迁移窗口内兼容。

阅读英文原文

回滚是迁移的一部分

没有反向路径的迁移,会把一次坏部署变成数据恢复事件。反向可以是 SQL down 迁移、功能开关或快照恢复,但必须在变更前设计并测试。“可以恢复备份”不算计划,除非已在生产规模数据上计时演练。

-- 扩展:增量变更,对新旧代码都安全
ALTER TABLE orders ADD COLUMN shipping_zone text;

-- 分批回填,然后在后续版本收缩
UPDATE orders SET shipping_zone = 'standard' WHERE shipping_zone IS NULL;

保持两个版本兼容

滚动部署期间新旧实例同时运行。删除旧版本读取的列会立刻报错。扩展-收缩保持兼容:增加新结构、双写、切换读取,等旧版本下线后再移除旧结构。

测量锁与持续时间

某些 ALTER TABLE 会加排他锁并重写表。大表上可能阻塞写入数分钟。在生产规模副本上演练并测量。数据库支持时使用在线 DDL 或影子表,并把变更安排在低谷。

测试回滚

对迁移后的模式运行 down 迁移和旧应用版本,验证读写与转换数据完整。如果 down 迁移无法恢复数据,明确唯一回滚是快照恢复并测量耗时。从未执行过的回滚路径只是希望,不是控制。