三问三答:细数 GaussDB 迁移的核心技术
迁移是数据库选型过程中客户最为关心的话题之一,经过大量的沟通调研,我们总结客户在数据库迁移方面的主要期望:迁移不影响业务运行(安心)、迁移不能丢数据(放心)、迁移实施起来简单(省心)。
本文从客户视角的三个疑问出发,一起了解华为云 GaussDB 数据库的迁移解决方案具有哪些核心技术,如何做到让客户迁移过程安心、放心、省心。
问题 1:能不能搬?
每种数据库都有自己的一些特定的“脾气”,比如 Oracle 的语言直接在 GaussDB 上运行不一定能工作,这个就是所谓的“语言不通”,这种场景称之为“异构数据库的迁移”,“语言不通”是长期以来异构数据库迁移替换的最大技术障碍。下面我们从技术和效果两方面来看。
技术方面,华为是怎么解决的?
华为的迁移套件中有一款叫 UGO 的工具,它像“翻译大师一样”,把这个难题分成两部分来看:
第一部分 读懂 Oracle 语言:Oracle 的语法对应一个个巨大的树形结构,并由一些关键元素构成,比如一条 Oracle 建表语句,表名是什么,有几列,每列的名字是什么等等。UGO 具有专属的语法分析器,能够顺着语法树和枚举探测出每条 Oracle 的语句元素构成,这样最终理解了语义,读懂了 Oracle 语言。
第二部分 根据知识库“翻译”成 GaussDB 的写法:根据刚才的描述,这个技术很像是做“翻译”工作,生活经验告诉我们,翻译的水平高低取决于接触的训练场景和词汇样本是否足够大,华为 UGO 依靠流程 IT 和工商银行这两个世界上最复杂的 Oracle 业务环境训练,截止到现在,已经向 UGO 注入了几千万行级的代码训练量,这个是业界公布的最高纪录,同类产品没有这方面的相关介绍。
那效果究竟如何?
“翻译大师”UGO 依托华为独有的训练场景,接入 Oracle 后,通常几分钟可以生成一份详细的评估报告,让迁移至 GaussDB 的可行性一目了然。在工行迁移攻坚战的最高挑战场景,千万级的存储过程迁移中,经过 UGO 的处理,Oracle 95%代码转化后可以在 GaussDB 直接运行,去 O 已经非常接近自动化。
问题 2:怎么迁移让业务无感知?
数据库一个非常繁忙的软件,每一秒过去可能成千上万的数据发生了变化,如何在数据高度变化的动态过程中将数据库迁走,比较容易想到的做法是将业务停机来确保数据迁移不丢失,但这对于一个核心业务来说是无法接受的,这样就提出了一个技术问题,有没有一种办法可以在业务运行过程中将数据库迁移到 GaussDB,也就是业界常说的热迁移,或者说在线迁移。
技术方面,华为的迁移套件中有一款叫 DRS 的工具,它像“数据的复制机”一样,能够做到 Oracle 运行过程中迁移到 GaussDB。DRS 工具从技术上将这个问题分为了三部分:
第一部分 存量数据搬迁,DRS 采用行级并行方式抽取数据,抽取性能最大可达 100+MB/s,同时客户可以在源端资源允许情况下设置迁移速度,做到按照想要的速度迁移,想快就快,想慢就慢;
第二部分 增量数据搬迁,数据库有一个组件叫日志,它用快速而有序的方式记录了数据库中每一个数据的变化,是数据库停电不丢数据的关键技术,DRS 采用技术手段可以将日志记录的事情重演一遍,这个过程就好像将 Oracle 数据变化录制下来,将同样的操作再在 GaussDB 上操作一遍,这个技术业界一般称为 CDC 技术(change data capture),不仅如此,DRS 还采用了技术手段将一条条数据的操作优化为并行运行,让两边数据既能确保不丢失,又能大大提升同步速度,通常 Oracle 数据库新产生的数据在 1s 内就可以在 GaussDB 看到,即使是一个非常庞大繁忙的 Oracle 系统(比如一天日志量达到 TB 级别)也能做到秒级同步。
第三部分 动态数据对比,DRS 内置了一套专利算法,每隔 x 分钟(可配置)识别增量日志中变化的数据行,并根据数据行的主键值,查询和对比源库和目标库的数据,从而阶段性验证 Oracle 和 GaussDB 的数据一致性,如此循环操作,持续刷新一致性比对结果,得到最终一致性结论。而不用停止 Oracle 数据库的业务接入,进行长时间的数据校对。
效果如何?
“数据的复制机”DRS 通过 CDC 技术实现在线迁移,做到 Oracle 在运行过程中将数据迁移至 GaussDB,数据可对比零丢失,业务可自由选择割接时间,并且搬迁过程中业务无感。总结下来就是,业务无感->安心,数据不丢失->放心,自动化数据同步->省心;
问题 3:怎么确保迁移后业务稳定运行?
上面解答了能不能迁移,怎么迁移的问题,那么迁移至 GaussDB 后能否平稳度过业务峰值的考验,技术上有了上面 UGO 和 DRS 的基础,我们能够在 Oracle 数据库上自动采集数据了。业务上的一个个请求是从应用程序发送至 Oracle 数据库的,里面有查询请求,也有数据修改请求,这些请求的总和就是业务流量了,业务高峰期采集到业务流量后通过 UGO 进行语法转化,结合通过 DRS 构建的真实生产环境数据,这样可以形成了基于 GaussDB 数据库的业务仿真压测环境。
通过仿真压测,客户可以直接预测 GaussDB 能否稳定度过业务洪峰,并提前识别是否需要做规格的调整,对于业务本身,也支持细粒度切换的迁移,DRS 可以让数据进行双向传输,可并线逐步切流,观察 GaussDB 的业务承载能力,具备随时可回退能力。
最后,再总结一下华为 GaussDB 的全套迁移方案, “翻译大师”UGO 解决语言不通语法转化的问题,“数据的复制机”DRS 解决业务不停机数据迁移的问题,同时 DRS 工具还提供仿真压测、数据一致性对比等配套能力。通过这些能力华为在金融各大行项目中已经大量落地,同时华为云数据库迁移解决方案是信通院数据库迁移评测中首个获得最高级迁移能力的厂商,华为云 GaussDB 数据库致力于通过技术,给客户提供一套安心、放心、省心的迁移解决方案。
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/a589419799449322e6a169f35】。文章转载请联系作者。
评论