外观
如何理解数据库迁移与滚动发布?
标准回答
发布时可能同时运行新旧版本,数据库结构不能只适合最新程序。常用思路是先增加兼容字段或结构,部署能兼容两种状态的代码,回填与验证后再切换读取,最后移除旧结构。每一步都需要版本和恢复点。
大表回填要分批并限制负载,观察锁、复制延迟、查询和磁盘。给字段加约束、建索引和删除列的实际锁行为需要按数据库版本与命令确认,不应统一宣称在线无阻塞。
回滚代码时要确认它还能读新数据;不可逆数据变换可能无法通过撤回程序恢复。EachOf 的小型迁移验证是局部证据,不能等同于长期大库升级保障。应记录目标规模和确实演练过的路径。
追问与回答
为什么先删旧字段再发新代码危险
旧实例仍可能读写旧字段,滚动过程会出现错误;部署不是同一毫秒替换全部进程。
迁移成功如何验收
不仅看脚本退出码,还应核对行数、约束、数据转换抽样、查询行为和新旧版本兼容。
易混淆点
- 把小数据库迁移耗时推导为生产大库耗时。
内容来源
- Android 与 AI 工程 Wiki · 原条目
q188