腾讯云:Mysql 外网迁移 3 大阶段

  • 腾讯云

2016 年 6 月 16 日

话题:MySQL语言 & 开发架构腾讯云

2016 年 7 月 5 日,诚邀您参与腾讯·“云 + 未来”生态峰会,与腾讯董事会主席马化腾先生及各界顶级企业家,国际专家共探产业与互联网融合发展之道,推动互联网 + 生态圈发展。 详情 >>

摘要:存有大量数据的数据库热迁移是一个庞大的工程,导出冷备时使用断点续传,同时建立主从同步 binlog,可有效避免避免写量过大无法同步的情况,有助于提高数据迁移成功率。

作者简介:杨睿,腾讯云高级产品经理,腾讯云云数据库产品负责人,从事后台开发工作 3 年,产品工作 5 年,对云产品的策划和运营积累了丰富的经验。

总所周知,数据库迁移一直是一个苦活、脏活、累活。尤其是在外网进行迁移,网络抖动,外网的安全风险,以及速度慢都是迁移中的难点与痛点。若还想做在线迁移,不停服,却要能做到平滑迁移,往往是难上加难,稍不注意就变成了重大事故。

腾讯云数据 CDB 在迁移 Mysql 中,积累了多年经验,可以分如下三大阶段:

第一阶段:积水成渊,蛟龙生焉

这种方式最简单,也最灵活。用户只需要输入用户名和密码,然后是外网数据库所在的端口和 ip 地址,通过 mysql 协议,可以导出数据库内容,做线上迁移。整个过程,用户仅仅需要在最初的时候输入,同时观察进度,等待监控告诉,同步几乎在秒级之间的差距,再切换 ip 即可。主要思想就是慢慢积少成多,但是问题也很明显:

  1. 对于大量数据迁移,无能为力;
  2. 速度较慢;
  3. 在网络故障时,无法自动恢复。

因此该方案仅仅适用于小数据场景。但便捷性和对环境的不挑剔,是一大特点。

第二阶段:弱水三千,只取一瓢

为了解决方案一的速度慢的问题,我们其实可以先把冷备后的文件导入到云数据库。所谓弱水三千 只取一瓢,这一瓢就是这个冷备份,再通过设置冷备的位置和 binlog 的位置来追数据。同时可以同时同步 binlog 和冷备文件,然后在到目的端执行,这样可以加快同步速度;但是这个方案依然无法处理一些网络故障导致的中断,尤其是在较大数据量时,其实也有优化空间。

第三阶段:抽刀断水,川流不息

抽刀断水水更流,若能做到断点续传,则可以任由外部环境变化,我自岿然不动。腾讯云数据库迁移工具中,有一系列工具可以安装在客户端,当然迁移是允许在客户端安装工具。该工具可以导出冷备文件,类似 Xtraback 的原理,同时也提供压缩功能,再自动传输到指定的迁移目的地。若中途出现故障,可以自己控制断点续传,再结合 binlog,便可以真做到任由外部环境怎么变化,始终保持最优秀的传输和数据导入导出。整个过程无需职守。

在实践过程中,为了保障迁移任务的调度和整个迁移服务器的高可用性,腾讯云 CDB 搭建了 OSS 集群保障数据迁移的正常进行。

总结

存有大量数据的数据库热迁移是一个庞大的工程,导出冷备时使用断点续传,同时建立主从同步 binlog,可有效避免避免写量过大无法同步的情况,有助于提高数据迁移成功率。

2016 年 7 月 5 日,诚邀您参与腾讯·“云 + 未来”生态峰会,与腾讯董事会主席马化腾先生及各界顶级企业家,国际专家一同,共探产业与互联网融合发展之道,推动互联网 + 生态圈发展。欢迎点击了解。

MySQL语言 & 开发架构腾讯云