数据迁移翻车实录:建表、升级、卸载时最容易被忽略的三件事
最近帮两个团队处理迁移事故,都是“脚本跑完了,数据不对”的类型。表面上流程走完了,实际隐患全藏在细节里。结合这几个案例,聊聊我的看法。
一、建表别只盯字段,先想清楚“谁先谁后”
外键依赖、索引顺序、字符集继承,这三项在测试环境往往没事,一到生产就炸。建议建表脚本拆成“结构”和“约束”两段执行,给回滚留余地。
二、升级脚本要能“重复跑”
很多人写的升级逻辑默认只执行一次,一旦中断重跑就报错或插重复数据。加个版本标记或幂等判断,成本很低,救场时很值。
三、卸载不是删库,是“拆弹”
删表前先确认没有定时任务、触发器、外部系统还在引用。我见过卸载后消息队列还在往空表写,日志刷了几十G。建议卸载清单里加上“依赖扫描”这一步。
总结一句:迁移的成败不在脚本多漂亮,而在有没有把“异常路径”当正事写。欢迎交流你踩过的坑。
一、建表别只盯字段,先想清楚“谁先谁后”
外键依赖、索引顺序、字符集继承,这三项在测试环境往往没事,一到生产就炸。建议建表脚本拆成“结构”和“约束”两段执行,给回滚留余地。
二、升级脚本要能“重复跑”
很多人写的升级逻辑默认只执行一次,一旦中断重跑就报错或插重复数据。加个版本标记或幂等判断,成本很低,救场时很值。
三、卸载不是删库,是“拆弹”
删表前先确认没有定时任务、触发器、外部系统还在引用。我见过卸载后消息队列还在往空表写,日志刷了几十G。建议卸载清单里加上“依赖扫描”这一步。
总结一句:迁移的成败不在脚本多漂亮,而在有没有把“异常路径”当正事写。欢迎交流你踩过的坑。
最新打赏