引言
在上一期中,我们初步介绍了如何系统地执行迁移和ZMigrate的快速使用。然而,在实践中,用户也可能面临大规模、关键任务以及异构数据库实例的复制和迁移。特别是在国内IT创新倡议下,多家国内数据库厂商持续向客户交付新的解决方案和产品。对于客户来说,直接从熟悉的系统如Oracle、PG、MySQL和MSSQL迁移到国内数据库如金仓、达梦、高斯数据库和OceanBase,风险极高。为了最小化风险,缓解客户担忧,并作为整机迁移的有效补充,我们推出了独立的数据库迁移工具,帮助客户以最小的成本完成此类异构迁移。
系统可移植性已成为架构师的标准认知
作为CTO/CIO/架构师,我们经常面临以下场景:
公司调整战略,IT基础设施需要从外国公有云提供商迁移到国内公有云提供商。
出于安全或成本因素考虑,公司计划从公有云迁移到自建私有云平台。
公有云供应商进行价格竞争,促使公司迁移到提供更大折扣的公有云平台。
接近生命周期结束的老化服务器或数据中心迁移需要将系统迁移到新的云平台。
现有的业务系统需要从旧的云平台迁移到新的IT创新云平台。
特别是在当前IT创新供应商如花般涌现的形势下,系统可移植性注定成为设计未来企业级架构的关键要素,并逐渐成为CTO/架构师的标准知识。在迁移过程中,我们通常将系统分为以下两大类别:
对于无状态服务迁移,您可以参考上一篇文章《业务迁移?别怕!ZStack ZMigrate迁移软件最佳实践》。
对于有状态跨平台数据库迁移,特别是对于依赖关键服务的分布式或强一致性数据库,整机迁移解决方案面临重大挑战:
系统停机时间长:通常需要10-20分钟甚至更长,而客户需要接近零停机时间的解决方案。
迁移失败风险高:处理TiDB等分布式数据库时,迁移后启动失败可能会发生。
跨操作系统迁移限制:在CentOS上运行的原始数据库需要迁移到Ubuntu或麒麟操作系统。
俗话说,“专家擅长他们的专业领域。”对于复杂的有状态数据库,ZStack提供了专业的迁移平台解决方案-DMS(数据库迁移服务)。DMS为数十种主流数据库提供跨平台、跨版本、跨类型的全增量集成实时同步功能。
DMS的核心优势
优势一:业务透明的迁移
在迁移数据库时,管理员根据业务需求选择适当的迁移方法。全服务器迁移的典型过程如下:
停止数据库以停止数据库(确保零写入),通常需要3-5分钟或更长时间。停止数据库等待正在进行的事务完成或回滚,触发全检查点操作以刷新脏页。随着数据库插入缓冲区和写入工作负载的增加,这个过程变得更慢。
启动最终增量文件系统复制,通常需要1-2分钟。
在目标端启动新虚拟机,需要2-3分钟。
新虚拟机启动后,在其中启动数据库以加载数据文件和索引元数据。这一步需要3-5分钟。
更高的数据库写入压力导致更长的停机时间(通常10-20分钟或更长时间),在此期间服务无法访问。
对于需要高业务连续性的场景,可以使用DMS部署预建的新数据库来处理复制、流量重定向和迁移,同时确保不间断的数据库访问。DMS集成了全量和增量同步:在完成全数据传输后,它使用日志船技术(类似于数据库主从复制)来解析源数据库日志(例如,MySQL二进制日志、Oracle重做、PostgreSQL WAL),将它们转换为DDL/DML语句,并在目标数据库上执行。这实现了接近零延迟的数据复制(模仿主从复制效果)。
如下图所示:
这种方法可以轻松地将读取流量重定向到新数据库。预启动生产灰度测试确保新数据库满足切换所需的QPS容量和RT要求。服务切换只需要停止旧应用程序并将数据源重定向到新数据库地址(JDBC/ODBC URL),实现无缝透明的迁移。
优势二:跨异构环境或平台的迁移
同样,DMS可以处理跨各种异构环境或数据库的迁移,例如以下场景:
系统之前使用MySQL 5.0,客户希望无缝迁移到MySQL 8.3以解决查询性能弱的问题。
在CentOS系统上部署的数据库,客户要求目标数据库内核为Ubuntu或麒麟V10。
客户希望将部署在Windows上的数据库迁移到Linux虚拟机上。
客户希望将运行在Linux虚拟机上的系统迁移到目标数据库上运行k8s。
运行在云供应商的RDS(例如,华为/阿里云)上的数据库,DMS可以平滑地将源RDS迁移到ZStack RDS或云平台,即使没有操作系统权限,也只保留数据库访问权限。
除了这些场景,DMS还解决了数据库集群迁移中的挑战——例如Oracle RAC、分布式高斯数据库/OceanBase
返回列表