怎样从Oracle到GaussDB的数据迁移

技术怎样从Oracle到GaussDB的数据迁移今天就跟大家聊聊有关怎样从Oracle到GaussDB的数据迁移,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 一

今天,我将向您介绍如何将数据从Oracle迁移到GaussDB。很多人可能不太了解。为了让大家更加了解,边肖为大家总结了以下内容。希望你能从这篇文章中有所收获。

一、背景

近期某省运营商O域核心业务系统数据库计划从Oracle迁移到GaussDB,数据库服务器也从SUN小型机转移到华为TaishanARM服务器。我有幸参与其中,主要负责从Oracle到GaussDB的数据迁移。在数据迁移前期,使用Datasync工具进行衍生测试,但由于衍生效率无法满足生产系统的关机要求,华为此时才推出了新的迁移工具mdash。SDR,于是利用SDR进行了新一轮的迁移测试。

1、环境信息

1)硬件配置信息

目标库泰山服务器的硬件配置信息如下:

怎样从Oracle到GaussDB的数据迁移

源库Sun小型机的硬件配置如下:

怎样从Oracle到GaussDB的数据迁移

2)软件配置信息

Tai服务器操作系统和数据库软件的版本如下:

怎样从Oracle到GaussDB的数据迁移

源Sun小型机的操作系统和数据库软件版本如下:

怎样从Oracle到GaussDB的数据迁移

由于本文的重点不在构建环境,因此将不详细描述操作系统和GaussDB的安装过程。

2、SDR产品描述

GaussDB SDR(Swift Data Replicator)是一款基于日志的实时CDC软件,支持实时捕获、转换和加载各种关系数据库的交易数据。主要应用于数据迁移、数据复制、远程容灾、应急备份、双服务中心、实时仓库/数据湖、查询卸载等场景。主要特点是:实时、高效的数据同步、丰富的异构同步能力、无插件、无入侵、安全无干扰、全程可视化运维管理等。

二、SDR的环境准备

支持来源为Oracle 9i及以上版本(测试中使用的SDR版本仅支持11R2)

支持目标为GaussDB 100 V300R100

使用可选模式和可选表完成数据同步。

支持有条件导出源库数据和将合格数据导入目标库。

支持多表并发同步,可配置并发数。

支持单表数据并发导出,可配置并发数。不支持同时导入单个表。

支持表结构的自动同步和自动数据类型映射。类型映射见下表。

1)硬件要求

目前SDR只支持x86 64位操作系统,对硬件资源的要求主要取决于源数据库的数据变化。

怎样从Oracle到GaussDB的数据迁移

表2-1所需资源

2)软件要求

怎样从Oracle到GaussDB的数据迁移

注意:在本次迁移测试中,SDR将部署在独立的x86服务器上,通过数据库服务端口访问两边的数据库。由于大多数迁移操作都是通过平台网页执行的,因此还建议准备一台可以直接访问此x86服务的端口7007/7008/7009的windows服务器。

1、SDR工具准备

1)创建安装用户和目录(x86服务器上的操作)

为软件无线电软件创建新用户和安装目录/主页/软件无线电:

su-rootgroupaddsrduserdadd-gsdr-d/home/SDR-s/bin/shsdrchown-rsdr : drnbs

p;/home/sdr/

2)切换到安装用户下,上传安装包

su - sdr ls -l  / home /sdr/ depend.tgz GaussDB_SDR_8.0.RC1_RHEL_x86_64.tar.gz licence.dat.tar.gz

3)解压所有压缩包

tar -xf depend.tgz tar -xf GaussDB_SDR_8.0.RC1_RHEL_x86_64.tar.gz tar -xf licence.dat.tar.gz

2、SDR工具安装

1)设置SDR_HOME环境变量

su - sdr export DIP_HOME=/opt/sdr

2)执行安装

cd /home/sdr ./GaussDB_SDR_8.0.RC1_INSTALL Creating directory SDR.pack Verifying archive integrity... All good. Uncompressing swift data replicator 100% Swift Data Replicator installation! ©2019 Huawei Technologies Co., Ltd. Swift Data Replicator software will install into directory [/home/sdr] Please input Swift Data Replicator web server IP address: [127.0.0.1] Please input Swift Data Replicator web server port: [7008] Please input Swift Data Replicator manager server IP address: [127.0.0.1] Please input Swift Data Replicator manager server port: [7009] Please input Swift Data Replicator queue transfer server port: [7007] Please input Swift Data Replicator admin server port: [7006] Please input Swift Data Replicator kafka component port: [7005] Please input Swift Data Replicator database IP address: [127.0.0.1] Please input Swift Data Replicator database port: [1888] Please set default Swift Data Replicator Share Memory Size: [1]- 1GB [2]- 4GB [3]- 8GB [4]-16GB [5]-input other value(GB) please choose 1,2,3,4: [1]4 Input value and choice list below, please confirm: http IP address : 127.0.0.1 http port : 7008 Manager IP address : 127.0.0.1 Manager Port : 7009 Transfer Port : 7007 AdminServerPort : 7006 Kafka component Port : 7005 SDR Database IP : 127.0.0.1 SDR Database Port : 1888 Share memory size : 16G Kafka Server Port : 7005 Press any key to begin install. ( Ctrl-c to interrupt ) Uncompressing bin.tgz... Uncompressing dbpkg.tgz... Uncompressing etc.tgz... Uncompressing lib.tgz... Uncompressing web.tgz... Wait a few of minutes, installing database... Checking parameters... Checking user... Checking old install... Checking kernel parameters... Checking dir... Checking integrality of run file... Decompressing run file... Warning: Dialect Scripts not found! But still proceed installation Setting user env... Checking data dir and config file Initiate db instance... Creating database... Changing file permission due to security audit... Install successfully, for more detail information see /home/sdr/zengineinstall.log. Refreshing config... Creating db user... Initialize data... all done  →顺利安装完成

3)配置depend

进入depend目录。

cd /home/sdr/depend/ sh enable.sh Enable success

4)加载 licence文件

cd /home/sdr cp licence.dat etc/ ls etc/ dip_config.xml licence.dat odbcinst.ini version xlog.ini

5)启动SDR组件

启动组件前需要先加载环境变量

su - sdr cd /home/sdr/ ../env (1)启动后台数据库 cd /home/sdr/db/app/bin python zctl.py -t start (2)启动其他组件 cd /home/sdr/ start_all (3)启动web服务 cd /home/sdr start_web

至此,SDR所有安装准备工作完成。

三、SDR配置

SDR管理界面需要通过浏览器进入,浏览器可选择chrome或IE  9.0以上。网址为x86服务器的IP,端口为安装时指定的端口,必须是HTTPS,如https://IP:port。初始帐号密码admin/admin。

怎样从Oracle到GaussDB的数据迁移

图-1-登录 SDR 控制台

登录后,需要先新建一个项目。

怎样从Oracle到GaussDB的数据迁移

图-2-创建项目

输入项目名称,并保存。

点击进入项目后,会进入配置管理主界面。点击左上角的“新建”按钮,创建任务组。

怎样从Oracle到GaussDB的数据迁移

图 -3-新建任务组

输入组名,和该组下进程的运行日志保留时间,点击“保存组”。

本次迁移测试是从Oracle到GaussDB,属于异构数据库迁移,可以直接使用模板库中的异构链路进行配置,直接点击“异构链路”即可,如下图所示:

怎样从Oracle到GaussDB的数据迁移

图 -4-异构链路配置

生成链路后,双击链路中的源库组件,在弹出的对话框中进行源库配置。(第一次配置后,可以选择作为模板保存,以便后续使用)。

怎样从Oracle到GaussDB的数据迁移

图 -5-源库数据库配置

注:源数据库类型为Oracle时需要对导出的对象添加附加日志,添加附加日志的SQL可以在“必要环境配置”中一键生成,并拿到源库中执行。

配置完源库信息后,接下来要配置捕获进程,捕获进程主要是用于从源库中抽数,可配置需要迁移的schema和对象类型,以及抽数时间间隔,分配内存等参数,配置如下:

怎样从Oracle到GaussDB的数据迁移

图-6-捕获配置

怎样从Oracle到GaussDB的数据迁移

图-7-配置捕获进程的高级选项

注:源库为Oracle RAC时,需要把所有节点的信息都输入进去,并且选择“ENABLE”

配置好捕获进程之后,接下来需要配置队列信息。整个链路需要配置两个队列,一个是导出队列,一个是导入队列,可以先按顺序配置导出队列。具体配置如下:

怎样从Oracle到GaussDB的数据迁移

图 -8-配置导出队列

队列配置完成后,需要配置ETL转换环节。在配置好源库信息后,ETL的大部分内容都会自动填充,直接使用默认配置就完事了。具体配置如下:

怎样从Oracle到GaussDB的数据迁移

图 -9- 配置ETL

接着是配置导入队列,这里不多叙述。配置如下:

怎样从Oracle到GaussDB的数据迁移

图 -10- 配置导入队列

按链路顺序,接下来是配置转载进程,但在配置之前,会提示需要先配置好目标库信息,所以只能先跳到最后的目标库信息配置,完成后再返回来配置转载进程信息。所以下面是配置目标GaussDB库的信息(同样,第一次配置时可以选择保存为GaussDB库的模板,方便后续使用。)

怎样从Oracle到GaussDB的数据迁移

图 -11- 配置目标库信息

接下来终于可以愉快地配置转载进程信息了。转载进程可配置的内容比较多,主要分为:包含条件,排除条件和高级选项。

包含条件中可配置要导入的schema和对象类型,以及是否在目标库替换schema_name。(本次测试进行了schema_name的转换,测试结果顺利。)

怎样从Oracle到GaussDB的数据迁移

图 -12- 配置装载包含条件

接下来是配置排除条件,本次测试没有添加排除条件,有需要的同学可添加测试。

怎样从Oracle到GaussDB的数据迁移

图 -13- 配置装载排除条件

下面是配置高级选项,下面截图是所有默认设置,可按需进行调整。

怎样从Oracle到GaussDB的数据迁移

图 -14- 配置装载高级选项

确认保存后,迁移所需的各项组件配置完成。

四、SDR全量迁移

SDR工具自带数据初始化的功能,点击工具栏的“工具集  >存量数据同步”,弹出配置界面。可配置导出任务的并发数以及单表的并发数,需注意控制并发数大小,极端情况可能会出现导出进程总数等于任务并发数 *  表内并发数。另外,“将数据导出为字符串”的选项必须勾选,不然速度虽然会极大加快,但是导出导入失败率也会大大提高。

怎样从Oracle到GaussDB的数据迁移

图 -15- 配置全量数据同步-导出条件配置

(注:开启初始化之前,需要在目标环境手动创建用户/权限/表空间等,创建命令跟Oracle基本一致。)

导出条件配置完并保存后,接下来配置导入条件配置。由于目标库没有业务压力,并发数可选择大些,也可根据需求选择是否“重建目标表”,“清空目标表”和“重建索引”等选项。

怎样从Oracle到GaussDB的数据迁移

图-16- 配置全量数据同步-导入条件配置

配置完成兵保存后,点击“开始全同步”后即开始存量数据同步。

怎样从Oracle到GaussDB的数据迁移

图 -17-查看全量同步实时信息

等待导出导入完成后即存量数据的迁移工作。迁移过程存在的报错信息可以在“导出错误信息”和“导入错误信息”中直接查阅。如果报错信息缺失或不足,可以进入到x86服务器中安装目录的log目录查看更详细信息。

五、SDR增量迁移(正式迁移使用的步骤)

划重点!!前面的全量迁移和下面要说的增量迁移是两回事,如果按照前面步骤做完全量数据迁移,要做增量迁移也需要把目标库的数据全删掉重新再来!

在使用增备前,需要先从源库中获取最新的scn号。在源端Oracle库获取最新的SCN号:

select current_scn from v$database; CURRENT_SCN ------------------ 16493654040783

1、开启捕捉进程

需要提前按文“SDR全量迁移”配置异构链路,这里不复述。配置完成后单独开启捕捉进程。在工作区选择捕获进程后,点击“启动”即可开启。

怎样从Oracle到GaussDB的数据迁移

图-18- 开启捕捉进程

2、启动存量备份

这次存量备份需要把拿到的最新scn号输入进去,以便把这个scn号的所有数据都同步到目标库。

怎样从Oracle到GaussDB的数据迁移

图-19- 配置存量数据同步

3、启动增备

等待存量备份完成后,单独开启转换和装载进程。以指定SCN方式启动转换进程,输入的scn就是在一开始获取到的最新SCN号。

怎样从Oracle到GaussDB的数据迁移

图-20- 指定scn启动转换进程

ETL启动完成后如图:

怎样从Oracle到GaussDB的数据迁移

图-21- 开启转换进程后

以指定SCN方式启动装载进程,输入的scn就是在一开始获取到的最新SCN号。

怎样从Oracle到GaussDB的数据迁移

图-22- 指定scn启动装载进程

转载进程启动完成后,状态如图:

怎样从Oracle到GaussDB的数据迁移

图-23- 开启装载进程后

都启动完成后,在工作区选择“列表”方式查看各进程状态,都为running则正常。

怎样从Oracle到GaussDB的数据迁移

图-24- 列表方式查看状态

至此,增备启动完成。

增备发起后,源库对操作表的DML和DDL都会准实时同步到目标端,直到手动终止或报错为止。(部分DDL不支持,例如:add database,add  datafile,role相关操作等等)

4、迁移过程问题

1)选择自动创建表的时候,分区表的分区信息(interval等)无法自动同步,导致导入GaussDB后分区表变回普通表

解决思路:在开始导数前,手动在目标环境创建所有分区表,在存量数据导入时不选择“重建表”选项

2)导出时,一个表上同时有long和clob类型的字段会报错

报错信息:table[dcpp.aqua_explain_1483468080]include LOB and LONG  column,unsupport

解决思路:在开始导数前,手动在目标环境创建所有报错表,在存量数据导入时不选择“重建表”选项

3)启动存量数据同步时,即使是同样的配置选项,点击“开始全同步“后,经常出现同步进程无法正常启动的问题

具体现象是:

  • 耗时:00H00M00S ,不开始计时

  • 源库Oracle中,发起一个查询全量表信息的SQL后,没有继续执行具体表的导出SQL,而是直接终结会话

  • 导出/导入报错信息中,没有任何信息

解决思路:多尝试几次,或者降低并发量。

使用过程感觉SDR比较类似Oracle的OGG工具。工作流程可简化为:指定scn导入此scn前所有数据进行初始化,初始化完成后根据此scn开始自动增量同步,直至手动结束同步。整个迁移过程只需要前期配置好同步进程,后期人工介入的时间就非常少(定期检查同步进程状态和日志状态还是必须的),而且因为数据一直在准实时同步,因此生产系统上的迁移时间就可以压缩的非常短,可以预留更多的时间做数据校验和其他操作。

看完上述内容,你们对怎样从Oracle到GaussDB的数据迁移有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/126276.html

(0)

相关推荐

  • 基于Instrumentation Framework的开源项目AndroidMonkey是怎样的

    技术基于Instrumentation Framework的开源项目AndroidMonkey是怎样的基于Instrumentation Framework的开源项目AndroidMonkey是怎样的,很多新手对此不是很

    攻略 2021年11月23日
  • 2021CSP-S题解,待补)

    技术2021CSP-S题解,待补) 2021CSP-S题解(待补)T1:
    这次最大的失误就是误判T1不可做...
    因为每架飞机只要有空闲的廊桥就可以就可以停靠,以此可以推出一个结论:当廊桥数量增加时,已

    礼包 2021年10月26日
  • ios中tableview的优化(ios tableview置顶功能)

    技术iOS中tableView的分类有哪些这篇文章主要介绍iOS中tableView的分类有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!大致分了一下,一个uitableview需要几个方法去

    攻略 2021年12月24日
  • 美的电饭煲怎么用,美的全智能电饭煲预约怎么用

    技术美的电饭煲怎么用,美的全智能电饭煲预约怎么用一美的电饭煲怎么用、工具/原料 电饭煲一个 二、方法/步骤
    1、在洗干净的锅里放上适量的清水和干净的白米。 2、打开电源开关,让电饭煲通电。 3、按下功能开关,选择自己需

    生活 2021年10月27日
  • android sqlite数据库创建(android studio中sqlite插入数据)

    技术android studio数据存储建立SQLite数据库怎么实现增删查改今天就跟大家聊聊有关android studio数据存储建立SQLite数据库怎么实现增删查改,可能很多人都不太了解,为了让大家更加了解,小编

    攻略 2021年12月20日
  • spring-data-jpa中findOne与getOne的区别是什么

    技术spring-data-jpa中findOne与getOne的区别是什么本篇内容主要讲解“spring-data-jpa中findOne与getOne的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷

    攻略 2021年11月23日