在上篇文章中,介绍了 使用SDR工具进行Oracle到GaussDB的数据迁移过程 ,文中提及过在SDR之前还曾使用DataSync工具进行迁移测试;虽然最终采用SDR作为正式迁移方案,但DataSync本身也有其可取之处,本文将对之前的测试过程做一个简单的回顾。
1)硬件配置信息
2)软件配置信息
GaussDB侧操作系统及数据库软件版本如下所示:
ORACLE侧操作系统及数据库软件版本如下所示:
由于本次文章的重点不在于环境的搭建,所以操作系统及GaussDB的安装过程就不细述。
DataSync是华为提供的GaussDB 100数据迁移工具,支持从Sybase、 Oracle、 MySQL、 GaussDB 100V100R003C10和SQL Server迁移数据至GaussDB 100 V300R001数据库。支持在线迁移和离线迁移两种数据迁移方式。配置好源库以及目标库相关配置信息后,启动迁移工具即可,运行过程中会生成相关的日志文件和报告,便于用户进行日常的管理及维护。
Datasync工具约束和限制如下:
1)挂载NFS目录 (可选项,Datasync支持部署在源端,目标端,第三方机器等,这次测试中挂载NFS只是为了尽量排除网络传递数据文件可能带来的效率影响)
在源库服务器及目标端服务器同时挂载迁移用的NFS文件系统。
源库操作:
su - root
mkdir /datasync
mount -F nfs -o rw,bg,hard,rsize=32768,wsize=32768,vers=3,nointr,proto=tcp,suid 192.168.xxx.xx:/vx/tycj_dcmp_tmp /datasync
在目标端操作:
su - root
mkdir /datasync
mount -t nfs -o rw,bg,hard,rsize=32768,wsize=32768,vers=3,nointr,proto=tcp,suid 188.0.xxx.xx:/vx/tycj_dcmp_tmp /datasync
2)上传和解压介质
① 上传介质到NFS目录
使用FTP工具上传GAUSSDB100-V300R001C00-DATASYNC.tar.gz 至/datasync目录。
② 解压介质
在源库服务器操作:
su - root
cd /datasync
tar -xvf GAUSSDB100-V300R001C00-DATASYNC.tar.gz
进入 GAUSSDB100-V300R001C00-DATASYNC.目录继续解压
tar -xvftar -zxvf DataSync.tar.gz。
3)检查java版本不低于1.8 (源端目标端都要更新)
由于Datasync的脚本都需要依赖java驱动,要求服务器的java版本不低于1.8。
#java -version
Java version “1.8.0_231
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot 64-Bit Server VM (build 25.231-b11, mixed mode)
4)把JDBC驱动包迁移到指定目录
由于datasync本身没有Oracle的JDBC的驱动包,需要提前把源库的JDBC驱动包拷贝到dependency-jars目录中(缺失这个驱动包,会在检查配置时提示无法连接Oracle库)。
在源库服务器执行:
su - oracle
cd $ORACLE_HOME/jdbc/
cp ojdbc6.jar/datasync/GAUSSDB100-V300R001C00-DATASYNC/DataSync/dependency-jars/ojdbc8-12.2.0.1.jar
注意:ojdbc8-12.2.0.1.jar这个命名是固定的,必须要改成同名文件才能识别。
1)Datasync有4个配置文件
如下所示:
2)配置密码密文
出于安全方面的考虑,迁移过程中需要用到的密码都必须使用密文方式记录在配置文件中,使用明文密码会被当做错误密码无法识别。因此在修改配置文件cfg.ini前,需要先将目标库服务器账号、源库数据库账号、目标库数据账号等账号密码生成对应密文。
生成密码密文方法如下:
① 生成导出数据库密码
java -jar DSS.jar -pwd 1
② 生成导入数据库密码
java -jar DSS.jar -pwd 2
③ 生成导入服务器密码
java -jar DSS.jar -pwd 3
-pwd后面跟的数字表示cfg.ini文件中要生成密文的密码类型。取值范围是:整数,[1, 9]。
具体含义如下:
PS:密码如果更新,或者重新生成新密文后,都需要更新配置文件里面的密文;另外往Gaussdb导入的时候不能使用root用户导入,必须使用其他账号。
3)新建存储导出文件目录 (如果没有用NFS需要在源端和目标端分别创建)
mkdir -p /datasync/GAUSSDB100-V300R001C00-DATASYNC/DataSync/data
4)修改配置文件cfg.ini (部分配置参数内容)
cd /datasync/GAUSSDB100-V300R001C00-DATASYNC/DataSync/config
vi cfg.ini
"flow_type":1,导出程序
"export_db":{
"database_type":2, ##数据库类型Oracle
"db":{
"ip":"192.168.xxx.xxx",
"username":"username",
"password":"B/AaX+yBemxxxxxxxx", ##刚刚生成的密文密码
"port":1522,
"db_name":"db_name",
"server_name":" server_name 1",
"trust_store":"",
"trust_store_password":"",
"key_store":"",
"key_store_password":""
"import_db":{
"database_type":6, ##数据库类型为GaussDB
"db":{
"ip":"192.168.xxx.xxx",
"username":"username",
"password":"Cbs48z0vL+AUyY1xxxxxxxxx",
"port":40000,
"server":{
"ip":"192.168.xxx.xxx",
"username":"username",
"password":"N2B+M6xIRQxxxxxxxxxxx",
"pub_key_file":"",
"port":22
"data_path":{
"export_local_path":"/datasync/GAUSSDB100-V300R001C00-DATASYNC/DataSync/data",
"export_remote_path":{
"ip":"",
"username":"",
"password":"",
"pub_key_file":"",
"port":22,
"path":""
"import_local_path":"/datasync/GAUSSDB100-V300R001C00-DATASYNC/DataSync/data",
"option":{
"ignore_lost_table":3, ##自动创建缺失的表
"disable_trigger":true, ##导入时禁用触发器
"import_total_task":40, ##资源允许下开启更大并行可提高导入效率