京东云开发者|京东云RDS数据迁移常见场景攻略

京东,开发者,rds,数据,迁移,常见,场景,攻略 · 浏览次数 : 277

小编点评

##京东云数据迁移场景总结 **场景一:数据迁移上云** * 数据迁移工具:Data Transformation Service (DTS) * 全量迁移:使用mysqldump导出源数据库,导入到目标数据库中。 * 数据同步:实时对源数据库进行读写复制。 **场景二:异地灾备用户** * 数据同步方式:跨地域备份同步 * 简单免费,但数据是非实时性的。 * 京东云提供异地灾备实例,可用于数据同步。 **场景三:数据订阅** * 目标端支持MySQL和Kafka * 目标端接收的数据起点默认为实时时间点 * 订阅消息长度可能超过中间件的最大消息长度,部分消息会被丢弃 **场景四:自建MySQL和云上MySQL相互复制** * 理论上是可行的,但京东云账号不支持赋予super权限 * 自建MySQL作为从库无法执行change master操作,无法从云上MySQL中获取数据

正文

云时代已经来临,云上很多场景下都需要数据的迁移、备份和流转,各大云厂商也大都提供了自己的迁移工具。本文主要介绍京东云数据库为解决用户数据迁移的常见场景所提供的解决方案。

场景一:数据迁移上云

数据迁移上云是最常见的一类场景,目前京东云提供了两个DTS(Data Transformation Service)迁移工具供选择,一个是数据迁移,一个是数据同步:

二者的主要区别如下:

下面是这两个工具使用中的一些常见问题:

01 两个迁移工具的原理是什么?

以MySQL为例,两个工具都有全量迁移/增量迁移/数据校验三个阶段,这三个阶段的主要原理如下:

全量阶段:

数据迁移使用mysqldump --single-transaction来取得一致性快照,但无法保证非事务引擎表的数据一致性,加上增量才可以保证数据的最终一致性,这个过程是串行操作;

数据同步使用多表并行的select方式,根据主键顺序分批获取记录,循环执行,如果没有主键,则进行全表查询。为了最大限度减少对源实例的影响,这个过程不加锁,也不用开启事务获得一致读,因此全量期间迁移的数据是不一致的,通过增量阶段可以达到最终一致性。所以数据同步只提供了‘全量+增量’和‘增量’两种选项,不提供单独的‘全量’选项。

增量阶段:

数据迁移和数据同步一样,都是通过迁移启动前记录的gtid点位,抓取对应binlog同步apply到目标端,二者区别在于迁移是串行的,同步会将同一个表的事务合并后一次提交,效率更高。

数据校验:

将源库的数据分块计算crc,每个块的元数据和校验信息记录到目标实例_jdts_check为前缀的库下checksum表中。目标库同步完成后根据同样算法进行计算,比较对应块号的crc值是否一致来判断校验是否成功。

02 迁移速度可以调整吗?

数据迁移不可以,数据同步可以选择更大的迁移实例和增加更多的并发来调整,但由于并发机制是基于表粒度的,对于少量大表的情况,增加并发并不会有明显作用。

03 迁移进度为什么显示超过100%?

为了效率更高,迁移显示的进度是根据已经迁移的记录数除以数据字典记录的记录数显示,数据字典的值并不完全准确,因此理论上会出现进度超过100%的现象。

04 迁移延时为什么很长?

大多情况是源库写操作压力大导致目标库binlog apply进度赶不上源库的写入速度,也有可能是目标库读写压力大或者迁移实例压力大,具体需要联系京东云技术服务及时介入。

05 迁移期间目标库是否可以读写数据?

理论上可以读写,但不建议在迁移期间操作,主要有两个弊端:

  • 写入脏数据会导致校验不一致。
  • 读写数据会导致目标库压力增大,减缓数据同步速度。

06 目标端如果有同名库表是否会被覆盖?

不会的,如果目标库库表有数据,预检的时候会报错不通过;如果是空的库表,则可以直接写入。

07 自检提示源或目标库网络不通怎么办?

检查源库和目标库的白名单限制,需要加上dts迁移实例的ip,在迁移任务配置的时候会在页面提示。

08 目标库中的_jdts为前缀的库可以删除吗?

迁移完成可以删除。

09 可以从只读实例同步吗?

只要源实例是gtid方式复制的,都可以通过主实例或只读实例同步。

10 数据迁移选择内网时,为啥只能用json格式,不能图形化选择库表?

因为数据迁移创建任务的时候,迁移实例还未创建,无法判断内网连通性;数据同步已经做了改进,内外网均可以通过图形化方式选择库表。

11 迁移期间对源实例有影响吗?

无论数据迁移还是数据同步,都需要对源实例库表做select,会有一定的读IO压力,建议尽量在业务低峰期同步或从只读实例同步。对于数据同步任务, 可通过控制台暂停任务,待源库负载降低,再启动数据同步任务。

12 mysql系统库应该如何迁移?

目前不支持迁移MySQL库,建议用户迁移时提前在目标库创建配置好对应的用户和权限。或者通过mysqldump等工具从源库导入。

13 迁移过程出现Got fatal error 1236 ... 的报错怎么办?

这个报错可能会在增量迁移过程出现,主要原因是增量需要的binlog在源端被删除所致,因此迁移期间尽量将源端binlog保留较长的时间。如果出现此类报错,如果无法找回被删binlog,只能重新开始迁移。

14 源端目标端版本必须一致吗?

数据迁移要求两边版本一致;数据同步目前支持低->高版本迁移。

场景二:异地灾备

用户经常会对数据有异地灾备的需求,京东云目前提供了两种方式,一种是可以配置跨地域备份同步,如下图:

这种方式简单免费,会定期将最新备份同步到异地,缺点是数据是非实时的,如果灾备恢复会有数据丢失。

另外一种方案是灾备同步(目前暂只支持MySQL),可以在京东云控制台创建一个异地灾备实例,然后利用DTS的数据同步功能将灾备实例和源实例进行数据同步,同步方式选择灾备同步。和普通同步机制不同,灾备同步利用的是MySQL的原生复制,因此灾备实例和源实例是完全一致的,相当于一个异地的只读实例,这样就可以达到异地灾备的目的。

对于灾备实例,有几点需要注意:

  • 灾备实例目前只支持和京东云MySQL进行同步,暂不支持自建或第三方云实例。
  • 灾备实例无法进行变配/重启/主从切换等操作,需要提前选好规格。
  • 灾备实例也是主从实例,可以读但无法进行写操作,类似异地只读实例,可以手工提升为主备实例。
  • 灾备实例是基于dts同步的,一旦手工结束同步,灾备实例将自动提升为普通主备实例。

场景三:数据订阅

很多业务场景都会用到数据订阅,比如订阅数据到ES扩展搜索、上下游订阅价格变更/服务通知、多业务库数据合并/构建宽表等。京东云提供了数据订阅功能来满足类似需求,目前源端支持
MySQL/Percona/MariaDB/PostgreSQL,目标端仅支持Kafka。

目标端使用json格式记录订阅信息,下面是一个update操作的例子:

{
"version": "0.1",
"database": "dbtest",
"table": "t1",
"type": "update",
"ts": 1582617997,
"time_zone": "Asia/Shanghai",
"host": "mysql-internet-cn-north-1-c52cb616874d4d29.rds.jdcloud.com",
"data": {
"created": "2020-02-25 16:01:46",
"flag": "10691",
"info": "dts_test",
"pkid": "11663",
"uuid": "11cae53d-57a5-11ea-98a6-fa163ea31339"
},
"old": {
"created": "2020-02-25 16:01:46",
"flag": "10691",
"info": null,
"pkid": "11663",
"uuid": "11cae53d-57a5-11ea-98a6-fa163ea31339"
},
"pks": {
"pkid": "11663"
}
}

数据订阅有几点需要注意:

  • 订阅的消息长度如果超过中间件的最大消息长度,消息将被丢弃,因此理论上会有丢失数据风险。
  • 目标端接受的数据起点默认为订阅的实时时间点,如果需要全量订阅可以联系京东云技服人员。

场景四:自建MySQL和云上MySQL相互复制

用户经常有这样的需求,是否可以用自建MySQL来同步云上MySQL?或者反过来,是否可以云上MySQL作为自建MySQL的从库来满足某些场景?

  • 从MySQL复制机制来看,理论上应该都是可以的,但京东云的账号不支持赋予super权限,无法执行change master操作,所以云上MySQL无法作为自建MySQL的从库。
  • 反过来,自建MySQL可以有super权限,是可以作为云上MySQL的从库。但这个是非标准操作,并不建议用户使用。主要原因是在某些情况下,会造成复制中断。比如云上MySQL配置变更后需要主从切换,而此时自建从库和切换前的源主库有复制延迟,部分binlog还未传递到自建从库,此时主从切换后复新主库由于没有这些binlog,会造成自建从库报1236的错误。针对这种情况,用户可以在扩容时选择延迟切换,可以避开业务高峰,在一定程度上避免类似问题。

作者:翟振兴

与京东云开发者|京东云RDS数据迁移常见场景攻略相似的内容:

京东云开发者|京东云RDS数据迁移常见场景攻略

云时代已经来临,云上很多场景下都需要数据的迁移、备份和流转,各大云厂商也大都提供了自己的迁移工具。本文主要介绍京东云数据库为解决用户数据迁移的常见场景所提供的解决方案。

一次MTU问题导致的RDS访问故障

导语 VPN是一种通过公网连接两个或多个私网站点的专用网络,使得这些站点仿佛是通过专线连接在一起。IPSec是一套协议框架,用于保证数据传输的私密性,完整性,真实性。但是VPN网络经常会带来一些连通性上的问题,通常与MTU设置的不合理有关。本文通过一个实际案例,来具体分析解决这个问题。 作者:陆信宇

开发者福利来了 | 京东云全系核心产品公开比价:我们承诺,买贵就赔!

京东云开启中国云市场的首次公开比价活动,承诺“买贵就赔”!

京东云开发者| Redis数据结构(二)-List、Hash、Set及Sorted Set的结构实现

1 引言 之前介绍了Redis的数据存储及String类型的实现,接下来再来看下List、Hash、Set及Sorted Set的数据结构的实现。 2 List List类型通常被用作异步消息队列、文章列表查询等;存储有序可重复数据或做为简单的消息推送机制时,可以使用Redis的List类型。对于这

京东云开发者|探寻软件架构的本质,到底什么是架构?

不论是开发人员还是架构师,我们都一直在跟软件系统打交道,架构是在工作中出现最频繁的术语之一。那么,到底什么是架构?你可能有自己的答案,也有可能没有答案。对“架构”的理解需要我们不断在实践中思考、归纳、演绎,形成自己的认知。 1 到底什么是软件架构 ? 定义 ”架构是什么“ 是件非常困难的事情,不同的

京东云开发者|ElasticSearch降本增效常见的方法

Elasticsearch在db_ranking 的排名又(双叒叕)上升了一位,如图1-1所示;由此可见es在存储领域已经蔚然成风且占有非常重要的地位。随着Elasticsearch越来越受欢迎,企业花费在ES建设上的成本自然也不少。那如何减少ES的成本呢?今天我们就特地来聊聊ES降本增效的常见方法。

京东云开发者|关于“React 和 Vue 该用哪个”我真的栓Q

一、前言:我全都要 面对当今前端界两座大山一样的主流框架,React和Vue,相信很多小伙伴都或多或少都产生过这样疑问,而这样的问题也往往很让人头疼和犹豫不决: 业务场景中是不是团队用什么我就用什么? 如果选择了其中一个使用,那为什么不用另一个? 这两个框架各有什么优点和无法解决的问题? 最新版本的

京东云开发者|IoT运维 - 如何部署一套高可用K8S集群

环境 准备工作 配置ansible(deploy 主机执行) # ssh-keygen # for i in 192.168.3.{21..28}; do ssh-copy-id -i ~/.ssh/id_rsa.pub $i; done [root@deploy ~]# cat /etc/ansi

京东云开发者|经典同态加密算法Paillier解读 - 原理、实现和应用

随着云计算和人工智能的兴起,如何安全有效地利用数据,对持有大量数字资产的企业来说至关重要。同态加密,是解决云计算和分布式机器学习中数据安全问题的关键技术,也是隐私计算中,横跨多方安全计算,联邦学习和可信执行环境多个技术分支的热门研究方向。 本文对经典同态加密算法Pailier算法及其相关技术进行介绍,重点分析了Paillier的实现原理和性能优化方案,同时对基于公钥的加密算法中的热门算法进行了横向

京东云开发者|提高IT运维效率,深度解读京东云AIOps落地实践

基于深度学习对运维时序指标进行异常检测,快速发现线上业务问题 时间序列的异常检测是实际应用中的一个关键问题,尤其是在 IT 行业。我们没有采用传统的基于阈值的方法来实现异常检测,而是通过深度学习提出了一种无阈值方法:基于 LSTM 网络的基线(一个 LSTM 框架辅助几个优化步骤)和无监督检测(神经