三问三答:细数GaussDB迁移的核心技术
摘要:本文从客户视角的三个疑问出发,一起了解华为云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数据库致力于通过技术,给客户提供一套安心、放心、省心的迁移解决方案。
三问三答:细数GaussDB迁移的核心技术的更多相关文章
- RESTful三问
我觉得学习一个技术,其实就是要弄明白三件事情:是什么(what),为什么(why),怎么用(how).正是所谓的三W方法. 所以打算总结一个"三问"系列.为了自己学习,也分享给别人 ...
- MYSQL加入远程用户或同意远程訪问三种方法
加入远程用户admin密码为password GRANT ALL PRIVILEGES ON *.* TO admin@localhost IDENTIFIED BY \'password\' WIT ...
- 【GDI+编程】--从三问开始
一. GDI+三问 1.1 GDI+是什么? GDI+是GDI(Graphics Device Interface)的后继者,是一种图形设备的接口,它构成了Win XP操作系统的子系统的API. 1. ...
- Latex 三线表及设置列数
参考: latex的三线表格及一些错误的修改 latex 三线表 Latex 三线表 及设置列数 绘制三线表: \begin{table}[htbp] \caption{\label{tab:test ...
- 剑指Offer(三十三):丑数
剑指Offer(三十三):丑数 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/baidu_31 ...
- 别人 echo 、你也 echo ,是问 echo 知多少?-- Shell十三问<第三问>
别人 echo .你也 echo ,是问 echo 知多少?-- Shell十三问<第三问> 承接上一章所介绍的 command line ,这里我们用 echo 这个命令加以进一步说明. ...
- OpenGL快问快答
OpenGL快问快答 本文内容主要来自对(http://www.opengl.org/wiki/FAQ)的翻译,随机加入了本人的观点.与原文相比,章节未必完整,含义未必雷同,顺序未必一致.仅供参考. ...
- k3 Bos开发百问百答
K/3 BOS开发百问百答 (版本:V1.1) K3产品市场部 目录 一.基础资料篇__ 1 [摘要]bos基础资料的显示问题_ 1 [摘要]单 ...
- 细数iOS上的那些安全防护
细数iOS上的那些安全防护 龙磊,黑雪,蒸米 @阿里巴巴移动安全 0x00 序 随着苹果对iOS系统多年的研发,iOS上的安全防护机制也是越来越多,越来越复杂.这对于刚接触iOS安全的研究人员来说非 ...
- 细数.NET 中那些ORM框架 —— 谈谈这些天的收获之一
细数.NET 中那些ORM框架 —— 谈谈这些天的收获之一(转) ADO.NET Entity Framework ADO.NET Entity Framework 是微软以 ADO.N ...
随机推荐
- 小白CNN入门指导
小白CNN入门指导 这几天一直在小白入门学习卷积层以准备组会,以下是我自学理解内容,若有错误的地方请各位评论指出 数学部分 一 卷积层 \[输入 32*32*3 (input neurons) \] ...
- 基于GPS定位和人脸识别的作业识别管理系统
一.技术参数 mysql5.5 asp.net jquery 高德地图api 百度人脸识别api 二.功能简介 实现简单的施工项目管理,包括项目地点,工期,名称,编号等 实现作业人员的档案信息管理,包 ...
- Thread类 常用方法
3.6 start 与 run 调用 run public static void main(String[] args) { Thread t1 = new Thread("t1" ...
- answer_to_everything
题解,第一次遇到这种题目纪念一下 攻防世界逆向入门题之answer_to_everything_沐一 · 林的博客-CSDN博客
- 手撕Vuex-安装模块方法
前言 经过上一篇文章的介绍,我们实现了将模块安装到 store 中,那么本章我们就来介绍一下怎么安装模块当中的方法也就是 actions.mutations.getters. 所以本次文章的目标就是将 ...
- .NET8 Blazor新特性 流式渲染
什么是SSR Blazor中的流式渲染结合了SSR(服务端渲染),服务端将HTML拼好返回给前端,有点像我们熟知的Razor Pages 或 MVC . 当已经有了 Razor Pages 或 MVC ...
- 利用 Excel 对学生的成绩进行分析管理
利用 Excel 对学生的成绩进行分析和管理是一种常见且有效的方法.以下是一些步骤和技巧,以帮助您实施这一过程: 1. 数据输入:将学生成绩数据输入到 Excel 中的一个工作表中.每个学生可以有一行 ...
- hexo+icarus博客搭建
展示效果:米七小站 环境准备 安装nodejs.git.hexo Hexo官网文档 Hexo初始化项目 $ hexo init myblog $ cd myblog $ yarn 查看效果 $ hex ...
- 我理解的null和“ “,希望大家给予更正。
我认为null是零的意思,就是没有任何的东西,比如说文件的读取中,没有任何的东西就是null,刚刚用new String创建的String里面有一个引用,所以它不为null,如果用String h=& ...
- ssm整合-项目异常处理方案
项目异常分类: 项目异常处理方案: 需要自定义异常处理 然后在处理器中加入 package com.itheima.controller; import com.itheima.exception.B ...