步骤三:迁移前构造数据
迁移前需要在源库构造一些数据类型,供迁移完成后验证数据。本章中端到端的数据为测试数据,仅供参考。
DRS支持的数据类型如下所示:
|
源库数据类型 |
目标库数据类型 |
源库数据类型做主键,同步能力 |
源库数据类型做非主键,同步能力 |
源库数据类型做主键,对比能力 |
源库数据类型做非主键,对比能力 |
备注 |
|---|---|---|---|---|---|---|
|
CHAR |
character |
支持 |
支持 |
支持,忽略字符前后的空格 |
支持,忽略字符前后的空格 |
- |
|
VARCHAR |
character varying |
支持 |
支持 |
支持 |
支持 |
源目标库数据表示范围不同,存在精度损失。 |
|
VARCHAR2 |
character varying |
支持 |
支持 |
支持 |
支持 |
- |
|
NCHAR |
character |
支持 |
支持 |
支持,忽略字符前后的空格 |
支持,忽略字符前后的空格 |
- |
|
NVARCHAR2 |
nvarchar2 |
支持 |
支持 |
支持 |
支持 |
- |
|
NUMBER |
numeric |
支持 |
支持 |
支持 |
支持 |
- |
|
NUMBER (6,3) |
numeric(6,3) |
支持 |
支持 |
支持 |
支持 |
- |
|
NUMBER (6,0) |
Integer |
支持 |
支持 |
支持 |
支持 |
- |
|
NUMBER (3) |
smallint |
支持 |
支持 |
支持 |
支持 |
- |
|
NUMBER (6,-2) |
integer |
支持 |
支持 |
支持 |
支持 |
- |
|
BINARY_FLOAT |
real |
不支持(目标库不支持做主键建表) |
支持 |
不支持 |
支持 |
源目标库数据表示范围不同,存在精度损失。 |
|
BINARY_DOUBLE |
double precision |
不支持(目标库不支持做主键建表) |
支持 |
不支持 |
支持 |
- |
|
FLOAT |
real |
不支持(目标库不支持做主键建表) |
支持 |
不支持 |
支持 |
源目标库数据表示范围不同,存在精度损失。 |
|
INT |
numeric |
支持 |
支持 |
支持 |
支持 |
- |
|
INTEGER |
numeric |
支持 |
支持 |
支持 |
支持 |
- |
|
DATE |
date |
支持 |
支持 |
不支持 |
支持 |
DRS在目标库建表时类型为date,此时源目标库数据表示范围不同,存在精度损失,不支持对比。 |
|
TIMESTAMP |
timestamp(6) without time zone |
支持 |
支持 |
不支持 |
校验到小数点后6位 |
源库使用限制:支持的最大精度是6。 |
|
TIMESTAMP_TZ |
timestamp(6) with time zone |
不支持(源库不支持做主键建表) |
支持 |
不支持 |
过滤该列 |
- |
|
TIMESTAMP_LTZ |
timestamp(6) with time zone |
不支持(目标库不支持做主键建表) |
支持 |
不支持 |
过滤该列 |
- |
|
INTERVAL_YM |
interval year to month |
支持 |
支持 |
不支持 |
不支持 |
增量同步不支持该类型。 |
|
INTERVAL_DS |
interval day to second |
支持 |
支持 |
不支持 |
不支持 |
增量同步不支持该类型。源库使用限制:支持的最大精度是6。 |
|
BLOB |
bytea |
不支持(源库不支持做主键建表) |
支持 |
不支持 |
过滤该列 |
- |
|
CLOB |
text |
不支持(源库不支持做主键建表) |
支持 |
不支持 |
过滤该列 |
- |
|
NCLOB |
text |
不支持(源库不支持做主键建表) |
支持 |
不支持 |
过滤该列 |
- |
|
LONG |
text |
不支持(源库不支持做主键建表) |
支持 |
不支持 |
过滤该列 |
- |
|
LONG_RAW |
bytea |
不支持(源库不支持做主键建表) |
支持 |
不支持 |
过滤该列 |
- |
|
RAW |
bytea |
不支持(目标库不支持做主键建表) |
支持 |
不支持 |
支持 |
- |
|
RowID |
character varying(18) |
支持 |
支持 |
支持 |
支持 |
- |
|
BFILE |
- |
不支持 |
不支持 |
不支持 |
不支持 |
源库使用限制:不支持bfile类型。 |
|
XMLTYPE |
- |
不支持 |
不支持 |
不支持 |
不支持 |
源库使用限制:不支持xmltype类型。 |
|
UROWID |
- |
不支持 |
不支持 |
不支持 |
不支持 |
全量增量都不支持同步。 |
|
sdo_geometry |
- |
不支持 |
不支持 |
不支持 |
不支持 |
源库使用限制:不支持sdo_geometry类型。 |
|
NUMBER(*,0) |
numeric |
支持 |
支持 |
支持 |
支持 |
- |
执行如下步骤在源库构造数据:
- 根据本地的Oracle数据库的IP地址,通过数据库连接工具连接数据库。
- 根据DRS支持的数据类型,在源库执行语句构造数据。
- 创建一个测试用的用户。
create user
test_infoidentified byxxx;test_info为本次迁移创建的用户,xxx为用户的密码,请根据实际情况替换。
- 给用户赋权。
grant dba to
test_info; - 在当前用户下创建一个数据表。
CREATE TABLE
test_info.DATATYPELIST(ID INT,
COL_01_CHAR______E CHAR(100),
COL_02_NCHAR_____E NCHAR(100),
COL_03_VARCHAR___E VARCHAR(1000),
COL_04_VARCHAR2__E VARCHAR2(1000),
COL_05_NVARCHAR2_E NVARCHAR2(1000),
COL_06_NUMBER____E NUMBER(38,0),
COL_07_FLOAT_____E FLOAT(126),
COL_08_BFLOAT____E BINARY_FLOAT,
COL_09_BDOUBLE___E BINARY_DOUBLE,
COL_10_DATE______E DATE DEFAULT SYSTIMESTAMP,
COL_11_TS________E TIMESTAMP(6),
COL_12_TSTZ______E TIMESTAMP(6) WITH TIME ZONE,
COL_13_TSLTZ_____E TIMESTAMP(6) WITH LOCAL TIME ZONE,
COL_14_CLOB______E CLOB DEFAULT EMPTY_CLOB(),
COL_15_BLOB______E BLOB DEFAULT EMPTY_BLOB(),
COL_16_NCLOB_____E NCLOB DEFAULT EMPTY_CLOB(),
COL_17_RAW_______E RAW(1000),
COL_19_LONGRAW___E LONG RAW,
COL_24_ROWID_____E ROWID,
PRIMARY KEY(ID)
);
- 插入两行数据。
insert into test_info.DATATYPELIST values(4,'huawei','xian','shanxi','zhongguo','shijie', 666,12.321,1.123,2.123,sysdate,sysdate,sysdate,sysdate,'hw','cb','df','FF','FF','AAAYEVAAJAAAACrAAA');
insert into test_info.DATATYPELIST values(2,'Migrate-test','test1','test2','test3','test4', 666,12.321,1.123,2.123,sysdate,sysdate,sysdate,sysdate,'hw','cb','df','FF','FF','AAAYEVAAJAAAACrAAA');
- 使语句生效。
commit;
- 创建一个测试用的用户。
- 在目标端创建库。
- 登录华为云控制台。
- 单击管理控制台左上角的
,选择区域。 - 单击左侧的服务列表图标,选择“数据库 > 数据管理服务 DAS”。
- 在数据管理服务DAS左侧导航栏,单击“开发工具”,进入开发工具数据库登录列表页面。
- 单击“新增数据库实例登录”,打开新增数据库实例登录窗口。
- 选择“数据库引擎”、“数据库来源”、目标实例,填写登录用户名、密码以及描述(非必填项)信息,开启SQL执行记录功能。
- 单击“测试连接”测试连接是否成功。
如测试连接成功,将提示“连接成功”,您可继续新增操作。如测试连接失败,将提示连接失败原因,您需根据提示信息进行修改,以便新增数据库登录成功。
- 设置完登录信息,单击“立即新增”。
- 新增完成后,单击新增登录的“登录”,登录当前数据库。
图10 登录数据库
![点击放大]()
- 选择“SQL操作”> “SQL查询”进入SQL查询页面。
![点击放大]()
- 执行如下语句创建兼容Oracle的数据库。
此例中为:test_database_info,请根据实际情况选择。
CREATE DATABASE test_database_info DBCOMPATIBILITY 'ORA';
步骤四:迁移数据库
创建DRS实例,将本地Oracle上的test_info数据库迁移到GaussDB实例中test_database_info数据库中。
创建迁移任务
- 登录华为云控制台。
- 单击管理控制台左上角的
,选择区域。
选择目标实例所在的区域。
- 单击左侧的服务列表图标,选择“数据库 > 数据复制服务 DRS”。
- 左侧导航栏选择“实时同步管理”,单击“创建同步任务”。
- 配置同步实例信息。
- 选择区域,计费模式,项目,填写任务名称。
![点击放大]()
- 配置同步实例信息,选择“数据流动方向”、“源数据库引擎”、“目标数据库引擎”、“网络类型”、“DRS任务类型”、“目标数据库实例”、“同步实例所在子网”、“同步模式”、“指定公网IP”(网络类型选择公网网络时需要配置该参数)、“规格类型”、“可用区”和“企业项目”,选填“标签”。
![点击放大]()
![点击放大]()
- 单击“开始创建”。
- 选择区域,计费模式,项目,填写任务名称。
- 配置源库及目标库信息。
- 选择“是否配置自建DNS服务”、填写源库的IP、端口、用户、密码等信息。
填写完成后,需要单击“测试连接”,测试连接信息是否正确。
![点击放大]()
- 填写目标库的账户和密码。
填写完成后,需要单击“测试连接”,测试连接信息是否正确。
![点击放大]()
- 单击“下一步”,仔细阅读提示内容后,单击“同意,并继续”。
- 选择“是否配置自建DNS服务”、填写源库的IP、端口、用户、密码等信息。
- 设置同步。
- 在源库选择需要迁移的数据库和表。本次迁移中选择“test_info”中的“DATATYPELIST”表。
![点击放大]()
- 选择完成后,可以设置迁移后是否重新命名库名和表名。
![点击放大]()
- 本次迁移将表名重新命名为“DATATYPELIST_After”。
注意重新命名时不要使用特殊符号,否则会导致迁移后执行SQL语句报错。
![点击放大]()
- 确认重命名设置内容,单击“下一步”。
![点击放大]()
- 在源库选择需要迁移的数据库和表。本次迁移中选择“test_info”中的“DATATYPELIST”表。
- 高级设置。
本页面内容仅做确认,无法修改,确认完成后单击“下一步”。
![点击放大]()
- 数据加工。
在该页面可以对迁移的表进行加工。包括选择迁移的列,重新命名迁移后的列名,本次迁移将“COL_01_CHAR______E”重新命名为“new-line”。
- 选择需要加工的表。
![点击放大]()
- 编辑“COL_01_CHAR______E”列。
![点击放大]()
- 将“COL_01_CHAR______E”重新命名为“new-line”,单击“确定”。
![点击放大]()
- 单击“下一步”。
- 选择需要加工的表。
- 预检查。
- 所有配置完成后,进行预检查,确保迁移成功。
![点击放大]()
- 对于未通过的项目,根据检查结果中的提示信息修复,修复完成后,单击“重新校验”,直到预检查通过率为100%。
![点击放大]()
- 预检查全部通过后,单击“下一步”。
- 所有配置完成后,进行预检查,确保迁移成功。
- 任务确定。
- 检查所有配置项是否正确。
![点击放大]()
- 单击“启动任务”,仔细阅读提示后,勾选“我已阅读启动前须知”。
- 单击“启动任务”,完成任务创建。
![点击放大]()
- 检查所有配置项是否正确。
- 任务创建成功。
任务创建成功后,返回任务列表查看创建的任务状态。
![点击放大]()
步骤五:迁移后进行数据校验
当任务状态变为“增量同步”,说明全量同步已经完成,全量同步完成后,登录GaussDB查看数据迁移结果。
- 等待迁移任务状态变为“增量同步”。
![点击放大]()
- 单击任务名称,进入任务详情页。
- 在“同步进度”页签查看全量同步结果。
如图所示,本次迁移将TEST_INFO库中DATATYPELIST表迁移至shard_0,共迁移了两条数据。
![点击放大]()
- 验证数据一致性。
- 在“同步对比 > 对象级对比”页面,查看库和表的迁移结果。
![点击放大]()
- 在“同步对比 > 数据级对比”页面,创建对比任务,查看表中行的迁移结果。
![点击放大]()
- 在“同步对比 > 对象级对比”页面,查看库和表的迁移结果。
- 通过DAS连接GaussDB的目标库“test_database_info ”。
DAS连接实例的方法请参考新增数据库登录。
- 执行如下语句,查询全量同步结果。
SELECT * FROM test_info.datatypelist_after;
Oracle数据库中的模式迁移完成后,会在GaussDB库中作为Schema,所以查询语句中添加Schema精确查询。
如图所示,查询表中的各个数据类型都迁移成功,并且数据正确无误。
![点击放大]()
- 验证增量同步。
由于本次迁移为“全量+增量”同步模式,全量同步完成后,如果在创建任务后有数据写入,这些写入的数据会一直同步至目标库中,直到任务结束。下面为模拟写入另外的数据。
- 根据本地的Oracle数据库的IP和地址,通过数据库连接工具连接数据库。
- 执行如下语句,在源库插入一条数据。
插入一条“id”为1的数据。
insert into test_info.DATATYPELIST values(1,'Migrate-test','test1','test2','test3','test4', 666,12.321,1.123,2.123,sysdate,sysdate,sysdate,sysdate,'hw','cb','df','FF','FF','AAAYEVAAJAAAACrAAA'); commit;
- 在目标库执行如下语句查询结果。
SELECT * FROM test_info.datatypelist_after;
如图所示,在源库新增的数据,可以实时同步至目标库。
![点击放大]()
- 结束迁移任务。
根据业务情况,待业务完全迁移至目标库,可以结束当前任务。
- 单击“操作”列的“结束”。
![点击放大]()
- 仔细阅读提示后,单击“是”,结束任务。
![点击放大]()
- 单击“操作”列的“结束”。
- 迁移完成后,进行性能测试。
测试云数据库GaussDB性能的方法请参见性能白皮书。
更多详情请参考GaussDB 文档中心:https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/productdesc/qlh_03_0001.html
,选择区域。

,选择区域。


























浙公网安备 33010602011771号