写点什么

GaussDB 技术解读丨数据库迁移创新实践

  • 2023-09-07
    广东
  • 本文字数:3691 字

    阅读完需:约 12 分钟

GaussDB技术解读丨数据库迁移创新实践

本文分享自华为云社区《DTCC 2023专家解读丨GaussDB技术解读系列之数据库迁移创新实践》,作者:GaussDB 数据库。


近日,以“数智赋能 共筑未来”为主题的第 14 届中国数据库技术大会(DTCC 2023)在北京举行,在 GaussDB“五高两易”核心技术,给世界一个更优选择的专场,华为云数据库生态工具研发总监窦德明分享了 GaussDB 数据库的迁移创新实践。



以下是演讲实录:


各位同仁,我是华为云数据库生态工具研发总监窦德明,我分享的是 GaussDB 数据库迁移的创新实践。

易迁移能力是企业数据库替换选型的关键考量


数据库的选型除了要看数据库本身的能力外,能否很平滑地从其他数据库迁移到 GaussDB,也是很多企业考量的关键因素。而数据库能否平滑迁移有两个非常核心的要素,一个是数据库本身,比如能否很好地兼容主流数据库的语法,让应用少改或者不改;另外一个是在数据库外围能否提供一些好用、易用的迁移工具,把应用中内嵌的 SQL、数据库中的对象以及全量和增量数据,在业务近乎零停机的情况下从其他数据库平滑地迁移过来。这两点是企业做数据库选型时考量的两个迁移关键要素。

结构(UGO)+ 数据(DRS)一站式迁移解决方案


在 2021 年的 DTCC 大会上,我们发布了华为云结构+数据一站式迁移解决方案,其中有两个核心工具。一个工具是 UGO,主要做结构和应用的语法兼容性评估和转换,比如将数据库上层应用中内嵌的 SQL 捕获出来进行评估,对数据库内部对象的 DDL 进行评估,并输出一个报告,清晰地展示哪些是数据库本身兼容的、哪些是通过 UGO 转换可以兼容的、哪些不能转换需要人工介入进行改造等。另外一个工具是 DRS,大家都知道,异构数据库替换过程中的数据迁移问题非常非常多,DRS 要解决的就是怎么在业务近乎不停机的情况下快速把客户的存量数据和增量数据迁移过来,并保证数据在任何情况下不丢、不错、不乱,同时提供灵活、多样的数据比对和修复能力。

UGO+DRS 一体化解决方案在实际项目中得到验证


UGO+DRS 一站式迁移解决方案近两年在很多项目中都得到了验证和应用,这里举几个实际的例子。第一个是我们公司自己内部的 MetaERP 项目,使用 UGO 自动转换了近 7 亿行的 O 数据库 SQL 脚本,转换成功率接近 100%,同时 GaussDB 实现了并行逻辑解码,性能高达近 300MB/秒,可以让 DRS 轻松应对 MetaERP 在月结、季结和年结时 10~20 倍的流量洪峰,保证数据同步<5s 的低时延。


第二个是某银行的数据库替换,这个项目迁移复杂度比较高,面临应用多、数据库对象多、存储过程和 package 深度依赖等困难,截至目前通过我们的一站式迁移解决方案,完成了近 1.3 亿行 SQL 脚本(包含近 8000 万存储过程)的 UGO 自动转换,转换成功率超过 96%,采用 DRS 迁移了近 300 套左右的 O 数据库实例,实现了 O 数据库与 GaussDB 数据库的长时间并机稳定运行,正反向低时延数据同步。

项目实施过程中遇到新的困难与挑战


在大量的项目实施过程中,我们 UGO+DRS 一站式迁移解决方案也遇到了一些新的困难和挑战,这些挑战相信大家也都会遇到,在此给大家做个分享。


挑战 1:在做异构数据库替换时,如何快速识别异构数据库语法不兼容点,识别数据相同的情况下相同 SQL 在不同数据库中执行的性能差异,以及低版本向高版本升级时是否会存在不兼容或性能劣化,再有就是如何模拟业务流量洪峰时的数据库行为表现。


挑战 2:当前很多企业的开发人员和 DBA 对 GaussDB 熟悉程度还不高,SQL 编写水平参差不齐,而且在做应用开发时缺乏统一的 SQL 编程规范和有效的 SQL 审核机制,很多烂 SQL 都流入了生产环境,进而引发大量的应用性能问题,影响生产业务和客户体验。


挑战 3:很多数据库当前的字符集在标准字符集的基础上做了很多扩展或者定制,导致数据迁移时相同字符集的不兼容,或者就没有对等的字符集,更有甚者,历史数据里已经存在了各种各样的乱码数据,这些特殊场景都会影响迁移的平滑性。


当然,困难和挑战还有很多,但这三个是会阻塞或拖慢数据库迁移进程的,那么针对这三个挑战,我们都做了哪些探索和创新呢?再给大家分享一下。

应对挑战 1:孵化数据库流量录制与回放能力


流量录制与回放的概念相信大家都不陌生,在数据库领域,有些数据库厂商也提供了相应的工具,GaussDB 面临的业务场景比较多,所以需要的技术也因场景而异。如果源数据库是公有云服务,而且提供了全量 SQL,那么直接获取全量 SQL 并进行回放即可;如果源数据库开启了审计日志,也可以直接下载并解析审计日志,当然开启审计日志会对数据库的性能有一定的影响;如果源端是自建数据库,而且未开启审计日志,那就需要部署一个 agent,通过捕获网络数据包,结合数据库本身的通信协议来解析出应用下发的所有 SQL。基本上这三种方案可以涵盖所有的场景,这里面还要注意几个点,首先是要研究透不同数据库的通信协议,其次是实现异构数据库替换场景下的 SQL 自动转换,另外是要具备 SQL 回放的流量控制能力,能加速或者放慢等,当然在解析、回放等出现异常的情况下,要做好记录。



接下来就是在源数据库的镜像库和 GaussDB 数据库同时进行流量回放,而且保证镜像库和目标数据库的数据完全一致,回放的 SQL 也完全一样,最终输出一个分析报告,比对每一条 SQL 的执行耗时、资源消耗、甚至是执行结果,很容易看出来哪些 SQL 的性能 GaussDB 比源数据库好、哪些出现了劣化、哪些是基本持平的。


我们正在和某银行进行数据库流量录制与回放的联合创新,从实际应用效果来看,通过 agent 方式捕获流量包,SQL 抓取成功率可以做到 97%以上,解析成功率和回放成功率可以达到 95%,在此过程中,还可以识别到语法不兼容、语义不兼容的异常情况。

应对挑战 2:孵化 GaussDB 数据库 SQL 审核能力


SQL 审核大家更为熟悉,很多大的企业都会进行探索和实践,但对于 GaussDB 来说,由于是纯自主创新的分布式数据库,很多企业的开发人员和 DBA 还不熟悉 GaussDB 的 SQL 语法,也没有制定较为完善的 SQL 编程规范,很多第三方 SQL 审核工具也没有针对 GaussDB 的审核能力,这种情况下,我们结合 UGO 成熟的 SQL 解析器,以及多个项目中的 SQL 调优实践,孵化出了 GaussDB 数据库的 SQL 审核能力。



我们 SQL 审核的输入可以有多种类型,可以是代码仓,也可以是一个 SQL 文件,还可以是通过流量录制获取的动态 SQL 等等,可以审核直接获取到的原生 SQL,也可以审核通过 UGO 转换后的 SQL。


截至目前,我们已经沉淀了 81 条审核规则,并在公司内部的两个项目以及外部的多个银行进行了应用,效果超出预期。

应对挑战 3:孵化字符集兼容性分析评估能力


针对数据迁移,大家最担心的莫过于正式割接时出现各种各样的问题导致割接失败,除了迁移工具本身的功能之外,最常见的可能就是字符集不兼容、数据乱码、生僻字等等。举个例子,O 数据库对 GBK 字符集做了扩充,可以存储 UTF-8 字符,而 GaussDB 数据库的 GBK 字符集非常规范,从 O 数据库向 GaussDB 迁移数据时,这些 UTF-8 字符根本无法写入,迁移必然失败。更有甚者,很多客户的海量历史数据中有大量的乱码数据,无法确定这些数据是什么时候写入的,哪些应用写入的,或者后续会不会再用到,但客户要求必须迁移过来。那么,面对这些挑战,我们尝试通过孵化字符集兼容性分析评估工具来提前识别。



这个工具的原理很简单,首先是建立一个可以分析的字符集基线,比如 GB 系、Unicode 系列等,其次是获取源数据库的元数据,包括字符集、索引信息、表结构信息(列类型、列长度)等,然后基于源数据库和目标数据库的字符集做好映射,最后再对数据库进行数据扫描和分析,输出多维度的分析评估报告。目前这个工具正在和某银行进行联创,从前期的试用效果来看,确实能发现很多问题,比如 ZHS16GBK 和 AL32UTF8 两种字符集混编、直接写入二进制格式导致数据乱码、ZHS16GBK 字符集使用了大量生僻字等。

对 UGO+DRS 一站式迁移方案的演进思考


以上是我们在使用 UGO+DRS 一站式迁移解决方案过程中遇到的三个大的挑战,以及应对这三个挑战做的一些创新实践。现在 GaussDB 的迁移场景越来越多,也越来越复杂,所以我们会不断地进行探索和创新,让我们的方案更完善,迁移过程更平滑,比如流量回放、SQL 审核、字符集兼容性评估会支持更多的数据库,推出非常详细和全面的应用、结构、数据迁移可行性分析报告,实现 SQL 捕获、转换、审核、优化全流程一体化管理等等,也希望能和客户、伙伴以及各位同行进行合作。


以上就是我分享的 GaussDB 数据库在迁移方面的一些创新实践,谢谢大家。

号外!



华为将于 2023 年 9 月 20-22 日,在上海世博展览馆和上海世博中心举办第八届华为全联接大会(HUAWEICONNECT 2023)。本次大会以“加速行业智能化”为主题,邀请思想领袖、商业精英、技术专家、合作伙伴、开发者等业界同仁,从商业、产业、生态等方面探讨如何加速行业智能化。


我们诚邀您莅临现场,分享智能化的机遇和挑战,共商智能化的关键举措,体验智能化技术的创新和应用。


您可以:


  • 在 100+场主题演讲、峰会、论坛中,碰撞加速行业智能化的观点

  • 参观 17000 平米展区,近距离感受智能化技术在行业中的创新和应用

  • 与技术专家面对面交流,了解最新的解决方案、开发工具并动手实践

  • 与客户和伙伴共寻商机


感谢您一如既往的支持和信赖,我们热忱期待与您在上海见面。


大会官网:https://www.huawei.com/cn/events/huaweiconnect


欢迎关注“华为云开发者联盟”公众号,获取大会议程、精彩活动和前沿干货。


点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚阅读数: 4
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
GaussDB技术解读丨数据库迁移创新实践_数据库_华为云开发者联盟_InfoQ写作社区