CVM自建MySQL数据库平滑迁移到腾讯云原生数据库

云原生数据库凭借高效、灵活、可扩展的数据服务,成为企业数据治理的得力“帮手”。出于业务稳定性和降本增效的考虑,越来越多的企业开始使用云厂商提供的云原生数据库来替换已有的自建数据库。但是,切换数据库的过程不亚于一次上云迁移的工作量,涉及到业务侧的调整和数据的迁移等工作,同时存在割接失败的风险。

本文分享一个客户案例,利用负载均衡 CLB 对业务和数据库进行解耦,在数据迁移完成后通过交换 CLB 和 TDSQL-C MySQL 的 IP 来实现平滑的迁移,确保数据库割接期间业务的稳定运行。

客户背景

该客户是零售母婴赛道的头部客户,在腾讯云上使用 CVM 自建的 MySQL 数据库,需要协助客户切换数据库到腾讯云原生数据库 TDSQL-C MySQL,当时遇到的问题有:

  1. 应用系统和数据库数量多:客户在腾讯云上总计有700+套应用系统,130+套数据库,交互复杂,耦合度高(有十几个应用使用同一个数据库的情况);
  2. 数据库用户权限划分比较复杂:存在用户名相同,IP地址不同,分配不同权限的情况,难以临时变更;
  3. 停机窗口时间要求严格:涉及到的业务关系到很多外部用户,部分为24小时业务,对迁移停机窗口时间要求严格;
  4. 客户项目组技术人员不足:项目组在迁移的同时还要兼顾正常业务需求的迭代,生产系统的维护等,人力比较紧张;

应对方案

为了降低数据库切换对于业务的影响,以及减少客户 IT 人员的工作量,我们提供的迁移方案是:

  1. 针对业务与数据库耦合度高的问题,通过增加代理的方式,业务提前发版,减少割接当天遗漏导致业务受损问题;
  2. 对于自建MySQL数据库,由于用户权限复杂,采用内网CLB作为代理,支持透传IP,对业务侧无感知;
  3. 针对客户DBA等关键人力紧张问题,协调相关技术人员驻场支持,协助客户完成数据库割接,从最早每周割接10套提升至每周可以割接20-30套,极大提高迁移效率;

迁移步骤

迁移架构图
  1. 增加内网CLB作为自建MySQL代理,实现应用与数据库解耦;
  2. 应用连接自建MySQL的ip、port、user、password等信息需要和目标TDSQL-C MySQL一致,保证连接串不需要变更;
  3. 使用DTS迁移数据到 TDSQL-C MySQL,完成全量迁移,并保持源目数据库的数据增量同步;
  4. 在数据库割接窗口,手动停止源库的写入(如源库打开read_only等);
  5. 删除原CLB实例,释放之前的vip,通过脚本更换TDSQL-C MyQL的vip为内网CLB的vip;
  6. 断开DTS,重新启动业务,TDSQL-C接管业务的访问;

附录:腾讯云原生数据库TDSQL-C MySQL产品架构

TDSQL-C MySQL 版基于 Cloud Native 设计理念,既融合了商业数据库稳定可靠、高性能、可扩展的特征,又具有开源云数据库简单开放、高效迭代的优势。

产品架构

一写多读

  • TDSQL-C MySQL 版,一个集群中包含一个主节点和最多15个只读节点。主节点处理读写请求,只读节点仅处理读请求。

计算与存储分离

  • TDSQL-C MySQL 版采用计算与存储分离的设计理念,满足公共云计算环境下根据业务发展弹性扩展集群的刚性需求。数据库的计算节点(Database Engine Server)仅存储元数据,而将数据文件、Redo Log 等存储于远端的存储节点(Database Storage Server)。各计算节点之间仅需同步 Redo Log 相关的元数据信息,极大降低了主节点和只读节点间的复制延迟,而且在主节点故障时,可快速拉起新节点实现平滑替换。

自动读写分离

  • 自动读写分离是 TDSQL-C MySQL 版提供的一个透明、高可用、自适应的负载均衡能力。通过配置数据库代理地址,SQL 请求自动转发到 TDSQL-C MySQL 版的各个节点,提供聚合、高吞吐的并发 SQL 处理能力。

高速链路互联

  • 支持全链路 RDMA(Remote Direct Memory Access)传输,即将数据直接从一台计算机的内存传输到另一台计算机,无需双方操作系统的介入,进一步优化了关键路径的系统性能,降低请求延迟,使 I/O 性能不再成为瓶颈,存储的多个副本之间也采用 RDMA 网络。

共享分布式存储

  • 多个计算节点共享一份数据,而不是每个计算节点都存储一份数据,极大降低了用户的存储成本。基于全新打造的分布式块存储和文件系统,存储容量可以在线平滑扩展,不会受到单个数据库服务器的存储容量限制,可承载 PB 级别的数据规模。

数据多副本强一致

  • 数据库存储节点的数据采用多副本形式,确保数据的可靠性,并通过多副本强一致策略保证数据的一致性。数据文件采用三副本强一致,保证数据可靠性,计费仅按照“单副本”数据量统计。

TDSQL-C MySQL 使用规范请参考:https://cloud.tencent.com/document/product/1003/102545