我是靠谱客的博主 独特海燕,这篇文章主要介绍数据库迁移方案,现在分享给大家,希望可以做个参考。

方案一 MQ迁移缓冲+单双写

不停服,增加缓冲层(MQ)。数据迁移过程中增量数据写入缓冲MQ,在数据迁移完成、缓冲层数据消费完成后,打开开关开始双写数据库,业务验证正常后关闭旧库读写(开关与验证遵循先关闭旧库表读验证通过再关闭旧库表写原则)。

  • 推荐指数 ☆☆☆☆☆
  • 优点:对用户无感,有回滚方案
  • 缺点:操作成本高、方案操作节点、引入组件较多、研发和测试流程需要严格把控


方案二 主动迁移+被动迁移+双写

当打开开关进行迁移过程中发生数据访问时,强制将客户端要访问的数据立刻迁移(被动迁移),然后再双写处理该数据请求;同时通过外挂程序或指令将源库表数据复制到迁移目标数据中,如果迁移目标库表中已存在则忽略,当迁移完成并验证通过后关闭旧库读写(开关与验证遵循先关闭旧库表读验证通过再关闭旧库表写原则)。

  • 推荐指数 ☆☆☆☆
  • 优点: 对用户无感,有回滚方案
  • 缺点:操作成本高、研发和测试流程需要严格把控
    逻辑示例:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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

最后

以上就是独特海燕最近收集整理的关于数据库迁移方案的全部内容,更多相关数据库迁移方案内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部