关于rds:京东云开发者|京东云RDS数据迁移常见场景攻略
云时代曾经降临,云上很多场景下都须要数据的迁徙、备份和流转,各大云厂商也大都提供了本人的迁徙工具。本文次要介绍京东云数据库为解决用户数据迁徙的常见场景所提供的解决方案。 场景一:数据迁徙上云数据迁徙上云是最常见的一类场景,目前京东云提供了两个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的原生复制,因而灾备实例和源实例是完全一致的,相当于一个异地的只读实例,这样就能够达到异地灾备的目标。 对于灾备实例,有几点须要留神: ...