数据库迁移方案少问三个问题,回滚要多花两天

举报
yd_273909102 发表于 2026/11/07 09:54:08 2026/11/07
【摘要】 做数据库迁移最怕的不是慢,是不可回滚。我们做过一次分库迁移,前期方案讨论了两周,上线用了四个小时,但真正花时间的是上线后第三天的回滚——花了两天,还丢了部分增量数据。复盘下来问题出在方案设计阶段少问了三个问题。第一个问题:回滚时点的数据怎么办。迁移期间新旧两套都在写,回滚意味着把新库这几天的增量同步回旧库,同步逻辑如果不提前写,回滚时就只能手工修数据。正确做法是迁移方案必须包含反向同步脚本,...

做数据库迁移最怕的不是慢,是不可回滚。我们做过一次分库迁移,前期方案讨论了两周,上线用了四个小时,但真正花时间的是上线后第三天的回滚——花了两天,还丢了部分增量数据。复盘下来问题出在方案设计阶段少问了三个问题。第一个问题:回滚时点的数据怎么办。迁移期间新旧两套都在写,回滚意味着把新库这几天的增量同步回旧库,同步逻辑如果不提前写,回滚时就只能手工修数据。正确做法是迁移方案必须包含反向同步脚本,并且在上线前演练一次。第二个问题:哪些查询是双写的,哪些是单边的。如果只有部分表双写,回滚时那些单边写的数据就是空的,业务会立刻出问题。方案里必须列出全部写路径,逐个标注双写还是单边。第三个问题:判定回滚的阈值是什么。我们当时没有明确指标,靠人感觉,结果在继续和回滚之间犹豫了很久,白白放大了数据差异。正确做法是提前定好三个数字,比如错误率超过百分之五、延迟超过两秒、持续十分钟,达到即触发回滚,不需要开会决定。这次之后我们把迁移方案模板重写了,强制包含四部分:正向流程、反向流程、双写清单、回滚触发条件。后来又做过两次迁移,都在一小时窗口内完成,其中一次真的按预设阈值回滚了,二十五分钟恢复,没有数据损失。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。