数据库迁移方案

数据库迁移方案方案一 MQ 迁移缓冲 单双写不停服 增加缓冲层 MQ 数据迁移过程中增量数据写入缓冲 MQ 在数据迁移完成 缓冲层数据消费完成后 打开开关开始双写数据库 业务验证正常后关闭旧库读写 推荐指数 优点 对用户无感 有回滚方案缺点 操作成本高 方案操作节点 引入组件较多 研发和测试流程需要严格把控方案二主动迁移 被动迁移 双写当打开开关进行迁移过程中发生数据访问时 强制将客户端要访问的数据立刻迁移 被动迁移 然后再双写处理该数据请求 同时通过外挂程序或指令将源库表数据复制到迁移目标数

方案一 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 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/178646.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午4:48
下一篇 2026年3月26日 下午4:49


相关推荐

  • 拉姆达表达式是什么_拉姆达

    拉姆达表达式是什么_拉姆达Q:最近接触到Stream流式编程遇到了一些错误,故做一次总结复习用。一、λ表达式通常我们会用一个类实现接口,然后构造对象作为参数传入,也可以使用匿名类,用λ表达式可以简化匿名类的编写,用例如下。classWorkerimplementsRunnable{@Overridepublicvoidrun(){…

    2026年1月24日
    5
  • 【愚公系列】2022年03月 FTP及Telnet弱口令渗透测试之ftp扫描器

    【愚公系列】2022年03月 FTP及Telnet弱口令渗透测试之ftp扫描器一:ftp批量登录二:ftp爆破

    2022年10月1日
    4
  • hbase 面试问题汇总

    hbase 面试问题汇总

    2021年11月27日
    43
  • 百度通用翻译api使用

    百度通用翻译api使用百度通用翻译 api 使用官方 api 文档 http api fanyi baidu com api trans product apidoc 第一步 注册百度账号 自行注册 第二步申请百度翻译 api 获得 appid 以及 securityKey 申请教程 https jingyan baidu com article 3f16e00305bb

    2026年3月17日
    2
  • 自动格式化SQL工具推荐

    自动格式化SQL工具推荐懒汉版基于网页的自动格式化 SQL http www dpriver com pp sqlformat htm 优点 方便缺点 有些 SQL 解析失败 如 Hive 的 QL 会导致整个格式化失败推荐指数 三颗星激活成功教程版有个收费版 SQLPrettyPri 但收费的明显不是我们的风格 激活成功教程版点这里 http www jb51 net softs 38037 html

    2026年3月18日
    2
  • verilog调用vhdl模块_verilog和vhdl哪个更好

    verilog调用vhdl模块_verilog和vhdl哪个更好初学FPGA,记录一些个人的探索历程和心得。本文的初衷是为了验证VHDL和Verilog文件互相调用功能。以一个简单的二选一选择器为例,分别用两种方法实现功能。一、用Verilog文件调用VHDL以Verilog文件为顶层文件,调用VHDL模块,testbench为Verilog文件。1、新建project2、编写.vhd文件,FPGA_VHDL.vhd,文件名与模块名称一致;3、编写FPGA_Verilog.v文件,文件名与模块名称一致,且设为top文件。4、编写testbench文件

    2026年2月8日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号