概述
方案一 MQ迁移缓冲+单双写
不停服,增加缓冲层(MQ)。数据迁移过程中增量数据写入缓冲MQ,在数据迁移完成、缓冲层数据消费完成后,打开开关开始双写数据库,业务验证正常后关闭旧库读写(开关与验证遵循先关闭旧库表读验证通过再关闭旧库表写原则)。
- 推荐指数 ☆☆☆☆☆
- 优点:对用户无感,有回滚方案
- 缺点:操作成本高、方案操作节点、引入组件较多、研发和测试流程需要严格把控
方案二 主动迁移+被动迁移+双写
当打开开关进行迁移过程中发生数据访问时,强制将客户端要访问的数据立刻迁移(被动迁移),然后再双写处理该数据请求;同时通过外挂程序或指令将源库表数据复制到迁移目标数据中,如果迁移目标库表中已存在则忽略,当迁移完成并验证通过后关闭旧库读写(开关与验证遵循先关闭旧库表读验证通过再关闭旧库表写原则)。
- 推荐指数 ☆☆☆☆
- 优点: 对用户无感,有回滚方案
- 缺点:操作成本高、研发和测试流程需要严格把控
逻辑示例:
int switch = 1 //0-旧 1-迁移中 2-迁移完成
Object obj = null;
if (switch == 1 || switch == 2) {
//xxx
obj = queryNew()
}
if (switch== 0 || (switch == 1 && obj == null)) {
//xxx
obj = queryOld()
//不存在则迁移(锦上添花)
if (switch == 1 && obj == null) {
trans(...)
}
}
//beginTx
if (switch == 1 || switch == 2) {
updateNew(xxx)
}
if (switch == 1 || switch == 0) {
updateOld(xxx)
}
//commitTx
最后
以上就是独特海燕为你收集整理的数据库迁移方案的全部内容,希望文章能够帮你解决数据库迁移方案所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复