回滚是迁移的一部分
没有反向路径的迁移,会把一次坏部署变成数据恢复事件。反向可以是 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 迁移无法恢复数据,明确唯一回滚是快照恢复并测量耗时。从未执行过的回滚路径只是希望,不是控制。