Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数据迁移的套路

数据迁移的套路

作者头像
方丈的寺院
发布于 2020-05-12 02:42:48
发布于 2020-05-12 02:42:48
1.1K0
举报
文章被收录于专栏:方丈的寺院方丈的寺院

数据迁移的类型

随着业务的发展,存储也会经常性的需要迁移。以下场景是我们开发过程中经常遇到的

  1. 业务、团队在快速扩张,需要适当时机进行微服务的拆分,需要独立的数据库,将数据从源数据库迁移到新的数据库
  2. 单表的记录数比较大,需要进行分库分表。需要将老表的数据迁移到新的分表中。
  3. 存储选型不对,比如关系型数据库的相互迁移, PG, MySQL,Oracle的相互迁移。NoSQL的Mongo,Cassandra,Hbase的相互迁移。
  4. 机房的迁移,自建机房到云的相互迁移

这些场景都需要进行数据迁移,虽然细节的方案有不同之处,但是也会有一些共同之处。

数据迁移的方案

数据迁移简单来说就是将数据从一个地方挪到另外一个地方。

因为我们的数据不是静态的,所以我们不能随便写个job迁移就好了。需要确保一些迁移上的标准

标准

数据一致性迁移完数据不能丢记录,单条记录的数据不能缺字段。

不停机数据在不断的写入,不能为了阻止写入,而不允许数据写入,需要保证业务写入的可用性。

迁移过程可中断、可回滚这点要求很高,是确保数据万无一失的策略。在迁移数据的各个阶段发现有问题,都可以回滚到原来的库,保证业务正常运行。

迁移方案

为了达到上述要求,一般采用双写策略。也就是写两份,既往老的写,也往新的写。

  1. 收敛读写 读写的入口越多,后续需要进行开关切换的地方就越多,就越容易出错,所以要尽可能的先将所有的读写入口都收敛到一个地方
  2. 双写 将增量的数据同时写入到两个存储系统。确保新的写入代码没问题。双写以写入老的为准,老的写入成功代表操作成功了,写入新的失败了需要记录失败日志,分析为何失败,进行修正和补偿
  3. 将老的存量数据迁移过来 老的存量数据迁移就是通过遍历id,写入新的存储。具体的方案有很多。可以使用同步工具,比如binlog +flink来处理。数据量比较少的就直接遍历就行。
  4. 数据校验 数据的一致性校验是重中之重,确保两边数据的记录数,单条记录的数据完整性。如果数据量不多,一般是全量校验。数据量很多,可以抽样校验。
  5. 切换新的读 数据校验通过后,就可以切换到新的读,万一还有问题,可以切换到老的读。排查问题,重新来过。
  6. 停止双写 在新的存储中安全平稳的运行了N天后,就可以停掉老的读了,整个迁移过程完成了。

注意事项

  1. 对于后端服务,存储是基石,是重中之重。稳定性要求是最高的。一定要确保数据是平滑迁移的,对业务无感知。
  2. 同时存储是有状态的,迁移难度比较大,开发者需要具备前瞻性,尽量在选型的时候慎重,选择合适的数据库,避免进行数据库迁移。发现数据库选型有潜在的问题时,需要当机立断,尽早迁移。不要以为出现问题的概率不大,就拖延了。否则一旦出现问题,就是重大故障,造成的损失难以估量。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 方丈的寺院 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
数据迁移,不停机上线的正确姿势
互联网系统,经常会有数据迁移的需求。系统从机房迁移到云平台,从一个云平台迁移到另一个云平台,系统重构后表结构发生了变化,分库分表,更换数据库选型等等,很多场景都需要迁移数据。
用户7927337
2020/11/04
5.1K1
数据迁移,不停机上线的正确姿势
做一次完美的数据迁移
数据迁移,是一个非常复杂的过程,不仅仅是将数据从一个地方移动到另一个地方。这里需要考虑业务定义、架构变更、应用改造、数据安全等诸多方面问题。在实际迁移工作中,需要结合企业的方方面面,做好合理的规划及实施,否则很可能会导致迁移结果达不到预期,浪费人力财力。在正式开始迁移之前,有几项工作是需要提前考虑的。
用户5548425
2020/06/04
1.9K0
万亿级数据应该怎么迁移?
在星爷的《大话西游》中有一句非常出名的台词:“曾经有一份真挚的感情摆在我的面前我没有珍惜,等我失去的时候才追悔莫及,人间最痛苦的事莫过于此,如果上天能给我一次再来一次的机会,我会对哪个女孩说三个字:我爱你,如果非要在这份爱上加一个期限,我希望是一万年!”在我们开发人员的眼中,这个感情就和我们数据库中的数据一样,我们多希望他一万年都不改变,但是往往事与愿违,随着公司的不断发展,业务的不断变更,我们对数据的要求也在不断的变化,大概有下面的几种情况:
用户5397975
2020/11/05
1.4K0
日订单量达到100万单后,我们做了订单中心重构
几年前我曾经服务过的一家电商公司,随着业务增长我们每天的订单量很快从30万单增长到了100万单,订单总量也突破了一亿。当时用的Mysql数据库。根据监控,我们的每秒最高订单量已经达到了2000笔(不包括秒杀,秒杀TPS已经上万了。秒杀我们有一套专门的解决方案,详见《秒杀系统设计~亿级用户》)。不过,直到此时,订单系统还是单库单表,幸好当时数据库服务器配置不错,我们的系统才能撑住这么大的压力。
用户7927337
2020/11/04
2.5K1
日订单量达到100万单后,我们做了订单中心重构
云时代,好用的数据迁移方案推荐
数据库作为企业核心的数据存储引擎,在其提供服务的过程中,经常会因为各种各样的原因需要进行数据的迁移。数据库迁移作为一个古老的话题并不神秘,但因为迁移数据的重要性,以及业务对数据库可用性的高要求,导致数据库迁移的复杂度极高,一般都需要专业工具的协助才能完成。当前 ,市面上也已经提供了各种各样的数据库迁移工具。本文将介绍数据库迁移的步骤以及市面上常见的迁移工具。
NineData
2023/02/03
3.2K0
云时代,好用的数据迁移方案推荐
服务化带来的问题---之数据迁移经历
上一篇文章我们介绍了服务化带来的一系列问题。以及我们解决服务雪崩、链路过长问题难定位、服务调用关系错综复杂这几个问题的经历。
用户7927337
2020/11/04
5540
数据迁移(2) - 如何快速迁移
在上一篇中我们介绍了数据迁移的套路,但是没有介绍具体的方案,这篇着重介绍下具体的数据迁移方案
方丈的寺院
2020/05/20
3.5K0
应用数据库迁移总结
应用数据库迁移,通常简称为数据库迁移,涉及将数据从一个数据库系统转移到另一个数据库系统。这可能包括更改数据库的物理位置(如从本地数据库迁移到云数据库),更改数据库管理系统(DBMS),或者更改数据库的架构和结构。
windealli
2024/06/25
5960
应用数据库迁移总结
100亿数据平滑数据迁移,不影响服务
一、问题的提出 互联网有很多“数据量较大,并发量较大,业务复杂度较高”的业务场景,其典型系统分层架构如下: (1)上游是业务层biz,实现个性化的业务逻辑 (2)中游是服务层service,封装数据访
架构师之路
2018/03/01
3K0
100亿数据平滑数据迁移,不影响服务
面试题-Mysql数据库优化之分表数据迁移
无论是垂直分表还是水平分表,都会涉及到数据迁移的问题,数据迁移要满足几个条件,首先数据要完整、准确,迁移过程不要影响现有业务,为了保证系统的持续性最好也不要停机迁移。
别明天就今天吧
2020/09/07
1.4K0
有了它,数据库也能空中加油,一边迁移一边跑起来
近日,在2020中国系统架构师大会上,腾讯云数据库技术负责人雷海林围绕腾讯云数据库异构多源同步迁移技术方案进行了分享。“数据库未来一定是向分布式方向发展,数据库核动力升级的时代即将到来。”雷海林表示。 Part1 国产化巨浪加速 从计算机出现开始,在各行各业的电子化发展过程中,传统关系型数据库都发挥着至关重要的作用,成为银行、保险、证券、政务、医疗等各行业电子系统的核心基础软件系统。 而随着云计算、数字互联网等新一代技术变迁,近年来关系型数据库也随之发生变革,形成了从以国外商业数据库为代表的传统集中式数据
腾讯云数据库 TencentDB
2023/03/30
6270
有了它,数据库也能空中加油,一边迁移一边跑起来
万字长文 | Hadoop 上云: 存算分离架构设计与迁移实践
一面数据原有的技术架构是在线下机房中使用 CDH 构建的大数据集群。自公司成立以来,每年都保持着高速增长,业务的增长带来了数据量的剧增。
Juicedata
2023/07/24
9840
万字长文 | Hadoop 上云: 存算分离架构设计与迁移实践
Elasticsearch跨集群数据迁移
如果是第一种场景,数据迁移过程中可以停止写入,可以采用诸如elasticsearch-dump、logstash、reindex、snapshot等方式进行数据迁移。实际上这几种工具大体上可以分为两类:
HLee
2021/01/20
1.6K0
Elasticsearch跨集群数据迁移
MySQL迁移OpenGauss原理详解
数据迁移是指将数据从一个数据库迁移至另一个数据库,按照数据库类型来分类,可分为同构数据库之间的迁移和异构数据库之间的迁移。
炒香菇的书呆子
2023/12/06
1.7K1
hbase迁移EMR实践
一、业务背景: 业务方需要搭建一套hbase集群,数据来源是hive表。 集群数据规模:每天4.5kw个key,420亿条左右数据,平均每个key每天1000个记录。每天总数据量1.2T左右,3备份需要存储2年约2.5P。 为响应公司业务上云,通过腾讯云上EMR搭建hbase集群。hive集群是在IDC机房,和普通集群迁移相比,这涉及到跨机房、跨集群的数据迁移,以及hive表数据到hbase集群数据的转换。 二、技术方案步骤 1、IDC机房与EMR网络的联通性验证
EMR小助手
2020/12/31
1.2K0
数据迁移与一致性思考与实践
在上一篇中我们讲了通用优惠券系统的设计,这篇主要是以优惠券重构后,我们现有系统接入到该通用优惠券系统过程中遇到的数据迁移与一致性问题相关的思考与实践。我们早期的优惠券系统使用的是ckv的存储,后来为了统一,全部改为使用redis储存了,这里首先一个数据迁移点是 ckv----->redis的迁移,另一个数据迁移点是上海redis----->深圳redis。之所以会有redis --->redis的迁移,主要是刚开始我们redis是和别人混部,选择了一个上海的机房,由于整个服务几乎都部署在广深地区,所以需要迁回来,并且单独一个redis集群存储,不在混部。
榴莲其实还可以
2020/07/14
17.4K3
数据迁移与一致性思考与实践
干货 | 数据为王,携程国际火车票的Sharding-Sphere之路
随着国际火车票业务的高速发展,订单量快速增长,单数据库瓶颈层面的问题逐渐显露,常规的数据库优化已无法达到期望的效果。同时,原先的底层数据库设计,也存在一些历史遗留问题,比如存在部分无用字段、表通过自增主键关联和各个应用直连数据库等问题。
携程技术
2021/09/10
1.5K0
干货 | 数据为王,携程国际火车票的Sharding-Sphere之路
亿级大表垂直拆分:上云业务的工程实践
伴随着不断扩张的业务量,在数据库层面一般会经历数据拆分。解决问题的第一步,就是重新评估 DB 表结构设计的合理性。
后台技术汇
2023/09/25
9590
亿级大表垂直拆分:上云业务的工程实践
Elasticsearch数据迁移与集群容灾
如果是第一种场景,数据迁移过程中可以停止写入,可以采用诸如elasticsearch-dump、logstash、reindex、snapshot等方式进行数据迁移。实际上这几种工具大体上可以分为两类:
bellen
2019/10/29
5.2K0
Elasticsearch数据迁移与集群容灾
迁移方案详解 | 使用YMP从异构数据库迁移到YashanDB
在国产化浪潮下,数据库系统的国产化替代成为了一个日益重要的议题,有助于企业降低对外依赖,提升信息安全和自主性。
qiaoyikefu
2025/01/09
1580
迁移方案详解 | 使用YMP从异构数据库迁移到YashanDB
相关推荐
数据迁移,不停机上线的正确姿势
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档