数据迁移方法

article/2025/8/19 0:51:48

在我的《高并发系统设计目标之可扩展性》博文中提到,随着业务的发展,我们会沿着AKF的Y轴进行微服务化的改造。但是沿着Y轴的重构过程中往往涉及到分库分表。那么这时就需要进行数据库的迁移了。沿着AKF的Z轴也类似,那么迁移有什么原则呢?

数据迁移原则

1、迁移的过程应该是在线的,也就是线上的服务应该能够正常的提供服务;
2、迁移完成后,数据应该是完整的,也就是迁移后新库与旧库的数据应该要保持一致;
3、迁移过程中如果出现问题,应该是可以回滚。

数据迁移之双写方案

其流程如下图:
在这里插入图片描述

1、设置新库同步旧库(快照+binlog方式),如果新库的库表结构有修改,则需要引入第三方软件如canal订阅旧库的binlog,然后解析出binlog根据修改规则插入数据到新库;
2、同步完成后,校验数据是否一致,如果不一致则停止迁移,一致保存快照;
3、打开双写功能,同时关闭新旧库的同步。如果对性能比较敏感,新库可以异步写的方式,但是如果新库写失败,应该记录下错误的日志,以供分析,然后停止迁移,问题解决后根据之前保存的快照信息,从第1点重新开始binlog同步;
4、双写工作一阵子后,校验数据的一致性(可以边写边校验,需要写好校验的工具),一致,则保存快照,否则停止迁移,问题解决后根据之前保存的快照信息同步binlog,同步完成后重新从第3点开始;
5、缓慢灰度读流量到新库,如果新库在云上,为了避免云上服务器与自建机房的延迟,应该是云上的应用访问云上新库,自建机房的应用访问自建机房的读库;如果灰度过程一直都没有问题,则继续;否则解决问题后重新开始灰度;
6、灰度完成后,关闭双写,改成只写新库。
这个过程中只有第6步不能灰度,但是经过前面几步的校验,最后一步出现问题的概率还是很小的。但是新库如果部署在云上,且库表结构没有变化,由于云上机房与自建机房通信的延迟比较大,双写方案可能就不怎么适合了,此时可以用级联同步的方案。

数据迁移之级联同步方案

级联同步方案的流程图如下:
在这里插入图片描述
1、把云上新库作为自建机房的备库,同步自建机房的数据;同时在自建机房新建备库同步云上新库;
2、数据同步完成后,将读流量缓慢灰度到云上新库(为了降低延迟,需要注意的是云上新库的读请求应该是云上的应用发起的,自建机房也类似),如果一切顺利则继续,否则停止灰度;
3、将写流量切换到云上新库,由于切写的时候,会停服,故要在业务低峰时候做;如果切换写流量后,出现问题,可以回滚到自建机房的备库,这也是为什么要在自建机房建立备库同步云上新库的原因;
4、关闭云上新库与自建机房旧库的同步逻辑,自此整个迁移过程就完成了。


http://chatgpt.dhexx.cn/article/fFe8SqJA.shtml

相关文章

如何高效地进行大规模数据迁移?

导读 我们在做一次系统业务模型重构的时候,往往会遇到把旧模型表中的数据迁移到新模型表中,如果这时候,我们旧表中的数据规模已达到千万级以上,那么,这个从旧表迁移到新表的过程会非常漫长,而业务仍需快速推…

电脑数据怎么迁移?

“最近我的电脑越来越卡,运行程序时还会出现卡死奔溃的现象,陪伴我多年的电脑到了退休的时候了。购买了一台新款的笔记本电脑,打开软件运行多么的流畅,别提多高兴了!可是,我想把旧电脑的数据导入到新电脑怎…

数据库整体迁移

1.迁移方法概述: 使用Navicat Premium 分别与源数据库和目标数据库建立连接,然后借助Navicat Premium自带的数据传输功能,实现Oracle数据库的迁移.其实跟从MySQL数据库迁移到oracle数据库是一个套路. O(∩_∩)O~ 听起来,是不是很简单,其实就是很简单!下边我就讲一下具体实现的细…

数据库迁移的方法

数据库迁移的方法 我们今天以mysql为例,讲讲数据库迁移的四种方法。 1、将数据库倒出为sql文件,再重新导入(推荐)。 首先将mysql数据库锁定,并将内存中的数据写入磁盘。 flush tables with read lock ; 用mysqldump将t…

数据迁移——技术选型

日常我们在开发中,随着业务需求的变更,重构系统是很常见的事情。重构系统常见的一个场景是变更底层数据模型与存储结构。这种情况下就要对数据进行迁移,从而使业务能正常运行。 背景如下:老系统中使用了mongo数据库,由…

Oracle数据迁移MySQL

前言: 现今,Oracle数据迁移MySQL的需求已经越来越普遍,主要的迁移场景大致可以分为三类,第一类是涉及小表以及少量表的一次性迁移,无需进行增量同步,第二类是涉及大表以及多表的一次性迁移,第三类是涉及增…

电脑之间如何迁移数据?数据迁移方法描述

电脑之间如何迁移数据?当更换电脑时,很多人需要做的第一件事,就是将旧电脑的数据通过外置存储设备等拷贝到新电脑上,并且还要在新电脑上重新安装应用程序,步骤繁琐,耗费了大量的时间和精力不说,…

DB数据迁移方案

互联网系统,经常会有数据迁移的需求。系统从机房迁移到云平台,从一个云平台迁移到另一个云平台,系统重构后表结构发生了变化,分库分表,更换数据库选型等等,很多场景都需要迁移数据。 在互联网行业&#xf…

【OceanBase】四种不同的数据迁移方式

前言 OceanBase 已连续 9 年稳定支撑双 11,创新推出“三地五中心”城市级容灾新标准,在被誉为“数据库世界杯”的 TPC-C 和 TPC-H 测试上都刷新了世界纪录。自研一体化架构,兼顾分布式架构的扩展性与集中式架构的性能优势,用一套…

数据迁移介绍

数据迁移方案 数据迁移框架有几个比较有名应用比较广泛的开源项目:阿里datax,apache sqoop以及Pentaho kettle。这三个框架整体上工作原理类似,下面介绍阿里datax数据迁移框架。 对旧系统进行了重构,就需要把原来的数据迁移到新数…

代码技巧——数据迁移方案【建议收藏】

开发工作中,可能会遇到如"大表拆分"、"跨库数据迁移"等场景,本文介绍互联网常见架构下的数据迁移方案及实现; 1. 数据迁移的业务场景 以下是需要数据迁移的场景业务场景; 1.1 大表拆分 由于历史原因&…

【Pytorch】Label Smoothing

理论介绍可以参考 【Inception-v3】《Rethinking the Inception Architecture for Computer Vision》 中的 4.5 Model Regularization via Label Smoothing 本质就是用右边(意会下就行)的标签替换左边的 one-hot 编码形式,让网络别那么愤青&…

关于label smoothing(标签平滑)

目的: label smoothing常用于分类任务,防止模型在训练中过拟合,提高模型的泛化能力。 意义: 对于分类问题,我们通常使用one-hot编码,“非黑即白”,标签向量的目标类别概率为1,非目标…

【AI面试】hard label与soft label,Label Smoothing Loss 和 Smooth L1 Loss

往期文章: AI/CV面试,直达目录汇总【AI面试】NMS 与 Soft NMS 的辨析【AI面试】L1 loss、L2 loss和Smooth L1 Loss,L1正则化和L2正则化在一次询问chatGPT时候,在他的回答中,由smooth L1联想提到了Label Smoothing Loss 。我把问题贴到下面,和chatGPT的回答,供你参考。不…

标签平滑(label smoothing)

目录 1.标签平滑主要解决什么问题? 2.标签平滑是怎么操作的? 3.标签平滑公式 4.代码实现 标签平滑(label smoothing)出自GoogleNet v3 关于one-hot编码的详细知识请见:One-hot编码 1.标签平滑主要解决什么问题&…

指数平滑法 Exponential Smoothing

指数平滑法 Exponential Smoothing 指数平滑法,用于中短期经济发展趋势预测。 1 时间序列分析基础知识 1.1 时间序列分析前提假设 时间序列分析一般假设我们获得的数据在时域上具有一定的相互依赖关系,例如股票价格在t时刻很高,那么在t1时…

label smoothing(标签平滑)

label smoothing是一种在分类问题中,防止过拟合的方法。 label smoothing(标签平滑) 交叉熵损失函数在多分类任务中存在的问题label smoothing(标签平滑)参考资料 交叉熵损失函数在多分类任务中存在的问题 多分类任务…

When Does Label Smoothing Help?

原文链接:When Does Label Smoothing Help? Hinton老师的这篇paper,解释了标签平滑策略在什么情况下是有效的? 摘要 通过从hard targets加权平均得到的soft targets,可以显著提升多分类神经网络的泛化性和训练速度。这种标签平…

【NLP基础理论】02 N-grams语言模型和Smoothing

注: Unimelb Comp90042 NLP笔记 相关tutorial代码链接 N-grams Language Model (N-grams语言模型) 目录 N-grams Language Model (N-grams语言模型)1.1 Deriving n-gram language models(推导&#xff0…

Good-Turning Smoothing介绍及推理

在介绍Good-Turning Smoothing之前,我们可以先看一个有趣的例子: 假设你在钓鱼,已经抓到了18只鱼: 10条鲤鱼,3条黑鱼,2条刀鱼,1条鲨鱼,1条草鱼,1条鳗鱼… Q1:…