摘要:存有大量数据的数据库热迁移是一个庞大的工程,导出冷备时使用断点续传,同时建立主从同步binlog,可有效避免避免写量过大无法同步的情况,有助于提高数据迁移成功率。
作者简介:杨睿,腾讯云高级产品经理,腾讯云云数据库产品负责人,从事后台开发工作3年,产品工作5年,对云产品的策划和运营积累了丰富的经验。
总所周知,数据库迁移一直是一个苦活、脏活、累活。尤其是在外网进行迁移,网络抖动,外网的安全风险,以及速度慢都是迁移中的难点与痛点。若还想做在线迁移,不停服,却要能做到平滑迁移,往往是难上加难,稍不注意就变成了重大事故。
腾讯云数据CDB 在迁移Mysql中,积累了多年经验,可以分如下三大阶段:
这种方式最简单,也最灵活。用户只需要输入用户名和密码,然后是外网数据库所在的端口和ip地址,通过mysql协议,可以导出数据库内容,做线上迁移。整个过程,用户仅仅需要在最初的时候输入,同时观察进度,等待监控告诉,同步几乎在秒级之间的差距,再切换ip即可。主要思想就是慢慢积少成多,但是问题也很明显:
因此该方案仅仅适用于小数据场景。但便捷性和对环境的不挑剔,是一大特点。
为了解决方案一的速度慢的问题,我们其实可以先把冷备后的文件导入到云数据库。所谓弱水三千 只取一瓢,这一瓢就是这个冷备份,再通过设置冷备的位置和 binlog的位置来追数据。同时可以同时同步binlog 和冷备文件,然后在到目的端执行,这样可以加快同步速度;但是这个方案依然无法处理一些网络故障导致的中断,尤其是在较大数据量时,其实也有优化空间。
抽刀断水水更流,若能做到断点续传,则可以任由外部环境变化,我自岿然不动。腾讯云数据库迁移工具中,有一系列工具可以安装在客户端,当然迁移是允许在客户端安装工具。该工具可以导出冷备文件,类似Xtraback的原理,同时也提供压缩功能,再自动传输到指定的迁移目的地。若中途出现故障,可以自己控制断点续传,再结合binlog,便可以真做到任由外部环境怎么变化,始终保持最优秀的传输和数据导入导出。整个过程无需职守。
在实践过程中,为了保障迁移任务的调度和整个迁移服务器的高可用性,腾讯云CDB搭建了OSS集群保障数据迁移的正常进行。
存有大量数据的数据库热迁移是一个庞大的工程,导出冷备时使用断点续传,同时建立主从同步binlog,可有效避免避免写量过大无法同步的情况,有助于提高数据迁移成功率。