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


11 迁移期间对源实例有影响吗?
无论数据迁移还是数据同步,都需要对源实例库表做select,会有一定的读IO压力,建议尽量在业务低峰期同步或从只读实例同步 。对于数据同步任务,可通过控制台暂停任务,待源库负载降低,再启动数据同步任务 。
12 mysql系统库应该如何迁移?
目前不支持迁移MySQL库,建议用户迁移时提前在目标库创建配置好对应的用户和权限 。或者通过mysqldump等工具从源库导入 。
13 迁移过程出现Got fatal error 1236 ... 的报错怎么办?
这个报错可能会在增量迁移过程出现,主要原因是增量需要的binlog在源端被删除所致,因此迁移期间尽量将源端binlog保留较长的时间 。如果出现此类报错,如果无法找回被删binlog,只能重新开始迁移 。
14 源端目标端版本必须一致吗?
数据迁移要求两边版本一致;数据同步目前支持低->高版本迁移 。
场景二:异地灾备用户经常会对数据有异地灾备的需求,京东云目前提供了两种方式,一种是可以配置跨地域备份同步,如下图:

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

文章插图
这种方式简单免费,会定期将最新备份同步到异地,缺点是数据是非实时的,如果灾备恢复会有数据丢失 。
另外一种方案是灾备同步(目前暂只支持MySQL),可以在京东云控制台创建一个异地灾备实例,然后利用DTS的数据同步功能将灾备实例和源实例进行数据同步,同步方式选择灾备同步 。和普通同步机制不同,灾备同步利用的是MySQL的原生复制,因此灾备实例和源实例是完全一致的,相当于一个异地的只读实例,这样就可以达到异地灾备的目的 。
对于灾备实例,有几点需要注意:
  • 灾备实例目前只支持和京东云MySQL进行同步,暂不支持自建或第三方云实例 。
  • 灾备实例无法进行变配/重启/主从切换等操作,需要提前选好规格 。
  • 灾备实例也是主从实例,可以读但无法进行写操作,类似异地只读实例,可以手工提升为主备实例 。
  • 灾备实例是基于dts同步的,一旦手工结束同步,灾备实例将自动提升为普通主备实例 。
场景三:数据订阅【京东云开发者|京东云RDS数据迁移常见场景攻略】很多业务场景都会用到数据订阅,比如订阅数据到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的从库来满足某些场景?