首页 > 其他分享 >数据在线迁移思考

数据在线迁移思考

时间:2023-04-27 10:47:29浏览次数:32  
标签:新库 旧库 在线 灰度 思考 迁移 数据 节点

背景

数据需要从一个库迁移到另外一个库,比如客户新买一个软件,使用的旧服务数据需要迁移到新软件内。
或者数据压力较大,需要分库分表, 数据需要迁移到新的库

方案1 双写

  • 开启双写 可以在服务内增加配置,是否写新库、旧库。 迁移期间, 开启配置 当天的数据同时写入新库和旧库。历史数据不会变走迁移程序。 如果双写性能 有影响,可以通过发消息的形式,把对新库的写入改为异步操作,即使消费失败,后续也可以根据检测逻辑进行修复。
  • **迁移数据 ** 编写程序 对之前加入的数据进行迁移。 (数据结构发生变化时,需要考虑转化逻辑)
  • **执行检测 ** 迁移完成后,执行检测逻辑, 对比 两端数据 是否一致。 可以通过版本号对比。 对不一致的数据再次执行迁移逻辑
  • 灰度验证 整体迁移完成后,提供一定数量的白名单,进行灰度验证, 一段时间后再全量放开,白名单内的人读取新库,读取步到的话转为读旧库,并记录日志,排查不一致原因。逐步解决。这个过程会消耗较长的一段时间。
  • 关闭旧库读写 等灰度验证完成关闭对旧库的读写,清理旧库数据即可

方案2 主从同步 (适用于简单的迁移,数据结构不发生变化)

  • 给主库挂一个从节点,通过处理日志,把数据同步到从节点,再停机,把从节点切换为主节点。

方案3 停机迁移

  • 停机
  • 写程序 多线程批量全部处理。
  • 修改配置 读写新库即可。
  • 存在问题可以回滚

标签:新库,旧库,在线,灰度,思考,迁移,数据,节点
From: https://www.cnblogs.com/wenshichen/p/17358245.html

相关文章

  • 你知道带宽50M的服务器能带动多少人同时在线吗?
    随着互联网的飞速发展,服务器带宽需求从初始的3M/10M到现在基础的50M/100M,越来越多的业务对服务器带宽要求越来越高,比如视频服务器、游戏服务器、应用程序服务器等。问题来了,你知道50M带宽的服务器可以带动多少人吗? 50M带宽能带动多少人并没有明确的算法,不同的业务类型会有不......
  • blob实现在线预览二进制流pdf
    <iframeclass="prism-player"frameborder="0"scrolling="no":src="imgUrl+'#toolbar=0'"allowTransparency="true"></iframe>//如果要隐藏下载和打印按钮,在嵌入的地址后面加’#......
  • 035公有云云盘在线扩容
    一、华为云磁盘在线扩容 (1)选择要扩容的磁盘,点击"扩容"即可;(2)选择要库容的磁盘大小,下一步 (3)扩容分区和文件系统(1)使用growpart工具扩容分区#安装growpart工具$sudoaptinstallcloud-guest-utils#growpart系统盘分区编号$growpart/dev/sdb1CHANGED:......
  • gitLab数据备份、恢复和迁移
    自建的Gitlab服务器常常会因为使用时间的增长,其空间容量等硬件需求都需要升级,或者迁移至更高配置的服务器上。备份、迁移、恢复、升级过程如下一、gitlab备份备份前gitlab的项目如图所示 1.1修改仓库存储位置gitlab通过rpm包安装后,默认存储位置在/var/opt/gitlab/git-dat......
  • 在线直播源码,自定义AlertDialog设置宽高并去掉默认的边框
    在线直播源码,自定义AlertDialog设置宽高并去掉默认的边框1、先写一个自定义的AlertDialog。 packagecom.phone.common_library.dialog; importandroid.annotation.SuppressLint;importandroid.content.Context;importandroid.content.DialogInterface;importandroid.vie......
  • 数据同步迁移工具
    mongo的迁移使用mongoshake实现mongo的单向迁移。MongoShake是一个以golang语言进行编写的通用的平台型服务,通过读取MongoDB集群的Oplog操作日志,对MongoDB的数据进行复制,后续通过操作日志实现特定需求。日志可以提供很多场景化的应用,为此,我们在设计时就考虑了把MongoShake做成通......
  • 深入思考右值引用
    一般来说引用指的是左值引用,它存在的目的是为了给左值起个别名。在C++新版本里面出了一个新的概念——右值引用。类比前面对左值引用的理解,右值引用是应该是对右值起的别名。不过这个所谓的右值引用已经不能用右值的方式来理解,往常对右值的认识一般以常量居多,但是这个被起别名的......
  • 如何解决通信架构迁移时的消息格式不一致问题
    有时候,当进行通信架构迁移时,会遇到消息格式不一致的兼容性问题,可采用定义内嵌引用的方式来解决,如下示例:1#include<iostream>23classA{45inta=1;6int&b;78structRequest{9intc;10}request;1112public:13A():......
  • 谈谈最近职场的一些思考
    今日鸡汤人生难得几回搏,此时不博待何时!告别校园,来到公司已经4个多月了,这四个月也真是快啊,真的是转眼之间,这日子,一天天的,简直太快。感觉前一阵还在学校呢,现在已经是职工了,不得不感叹岁月的流逝实在太快。在入职的这4个月里,自己经历过欢喜,也经历过挫折。公司的试用期是6个月,我用4个......
  • es-dump数据迁移
    使用elasticdump工具迁移数据1.下载npm打开网址:http://nodejs.cn/download/或者wgethttps://npm.taobao.org/mirrors/node/v16.19.1/node-v16.19.1-linux-x64.tar.xztar-xf node-v16.19.1-linux-x64.tar.xz -C /usr/local/cd /usr/local/node-v16.19.1-linux-x642......