数据库模式迁移
功能
runDSC.sh和runDSC.bat分别用于将Teradata、Oracle、Netezza、MySQL和DB2的schema和query迁移到GaussDB(DWS)上。
命令格式
Linux操作系统:
./runDSC.sh --source-db<source-database> [--input-folder<input-script-path>] [--output-folder<output-script-path>] [-application-lang <application-lang>] [--conversion-type<conversion-type>] [--log-folder<log-path>] [--version-number <Gauss Kernel Version>] [--target-db<target-database>
Windows操作系统:
runDSC.bat --source-db<source-database> [--input-folder<input-script-path>] [--output-folder<output-script-path>] [-application-lang <application-lang>] [--conversion-type<conversion-type>] [--log-folder<log-path>] [--version-number <Gauss Kernel Version>] [--target-db<target-database>
参数说明
全称 |
缩写 |
数据类型 |
说明 |
范围 |
默认值 |
示例 |
---|---|---|---|---|---|---|
--source-db |
-S |
字符串 |
源数据库。 |
|
N/A |
--source-db Oracle(or) -S Oracle |
--input-folder |
-I |
字符串 |
包含Teradata/Oracle脚本的输入文件夹。 |
不适用 |
不适用 |
--input-folder /home/testmigration/Documentation/input (or) -I /home/testmigration/Documentation/input |
--output-folder |
-O |
字符串 |
保持迁移后脚本的输出文件夹。 |
不适用 |
不适用 |
--output-folder /home/testmigration/Documentation/output(or)-O /home/testmigration/Documentation/output |
--application-lang |
-A |
字符串 |
用于迁移的应用程序语言解析器。 SQL:迁移SQL文件中的SQL模式/脚本。 Perl:迁移Perl文件中的BTEQ/SQL_LANG脚本。 |
|
SQL |
--application-lang Perl 或 -A Perl |
--conversion-type |
-M |
字符串 |
迁移类型。用户需根据输入脚本指定该参数: Bulk:迁移DML和DDL脚本。 BLogic:迁移业务逻辑,如过程和函数。 BLogic仅适用于Oracle PL/SQL。 |
Bulk |
--conversion-type bulk 或 -M bulk |
|
--log-folder |
-L |
字符串 |
日志文件路径。 |
不适用 |
不适用 |
--log-folder /home/testmigration/Documentation(or)-L /home/testmigration/Documentation |
--version-number |
-VN |
字符串 |
Oracle必选参数 |
Oracle |
不适用 |
--version-number 或 -V1R8_330 |
--target-db |
-T |
字符串 |
目标数据库 |
|
gaussdbA |
--target-db gaussdbT (或) -T gaussdbT |
使用指南
必须指定源数据库、输入和输出文件夹路径。迁移类型和日志路径可选。
如果未指定日志路径,DSC会在TOOL_HOME路径下创建log文件夹,用于存储所有日志。
命令示例
./runDSC.sh --source-db Oracle --input-folder opt/DSC/DSC/input/oracle/ --output-folder /opt/DSC/DSC/output/ --log-folder /opt/DSC/DSC/log/ --application-lang SQL --conversion-type bulk --target-db gaussdbT
系统回显
********************** Schema Conversion Started ************************* DSC process start time : Mon Jan 20 17:24:49 IST 2020 Statement count progress 100% completed [FILE(1/1)] Schema Conversion Progress 100% completed ************************************************************************** Total number of files in input folder : 1 ************************************************************************** Log file path :....../DSC/DSC/log/dsc.log DSC process end time : Mon Jan 20 17:24:49 IST 2020 DSC total process time : 0 seconds ********************* Schema Conversion Completed ************************
如果输入文件夹中没有SQL文件,则在控制台上会显示如下消息:
环境搭建及恢复(数据库及数据库用户)
GaussDB(DWS) -数据库创建和schema建立
- 登录Postgres系统。
gsql -p <port> -d postgres drop database <database name>; create database <database name>; \c <database name> GRANT ALL PRIVILEGES ON DATABASE <database name> TO <user>; grant database to <user>;\q gsql -p <port> -d <database name> -U <user> -W <password> -h <IP> -f drop database <database name>; create database <database name>; \c <database name>; GRANT ALL PRIVILEGES ON DATABASE <database name> TO <user>; gsql -p <port> -d <database name> -U <user> -W <password> -f
- 运行Setup目录下的所有文件。
命令:
sh runDSC.sh -S oracle -M blogic -I <input path> sh runDSC.sh -S oracle -M bulk -I <input path>
配置详情
- 设置GaussDBSQLExec=True。并更新gaussdb.properties文件。
- 创建新用户(T),新数据库(A)。添加所有schema模式。
迁移后验证
Database Schema Convertor转换完含有SQL语句的源文件后,在目标GaussDB上执行转换后的文件,并生成文件执行成功和失败的明细报告。
Database Schema Convertor完成迁移后,会调用迁移后验证脚本(通过配置项控制)。此验证脚本(配置详情见配置文件)会连接到目标GaussDB数据库并执行。
迁移后验证脚本会连接到目标GaussDB数据库(具体信息在配置文件中配置),并执行该脚本。
- 配置config文件夹下的application.properties
在GaussDB中执行迁移脚本的取值范围:true/false,默认值:false。
将executesqlingauss设置为true。
true: executesqlingauss将在GaussDB上执行迁移脚本。
- 配置config文件夹下的gaussdb.properties
#gauss database user with all privileges gaussdb-user= gaussdb-port= #Database name for GaussDBA gaussdb-name= #gaussdb ip gaussdb-ip=
gsql和zsql客户端的依赖关系:
- 由于在GaussDB上执行脚本时需依赖gsql(GaussDB(DWS)),为保证Database Schema Convertor正常运行,需在安装了GaussDB实例或客户端(gsql)的节点上运行Database Schema Convertor,且进行验证的用户具有执行gsql或zsql命令的权限。
- 由于Gauss数据库实例/客户端只能安装在Linux操作系统中,因此只能用于Linux环境下的功能验证。
- 在远程GaussDB实例上执行gsql命令,建议在GaussDB实例的如下配置文件中增加客户端系统IP或主机名。
/home/gsmig/database/coordinator ---pg_hba.conf
回显
GaussDB(DWS)
********************** Verification Started ****************************** Sql script execution on Gauss DB start time : Wed Jan 22 17:27:07 CST 2020 Sql script execution on Gauss DB end time : Wed Jan 22 17:27:44 CST 2020 Summary of Verification : ================================================================================================================================== Statement | Total | Passed | Failed | Success Rate(%) ----------------------------------------------------------------------------------------------------------------------------------- COMMENT | 15 | 15 | 0 | 100 CREATE VIEW | 4 | 3 | 1 | 75 CREATE INDEX | 4 | 3 | 1 | 75 CREATE TABLE | 6 | 6 | 0 | 100 ALTER TABLE | 3 | 3 | 0 | 100 --------------------------------------------------------------------------------------------------------------------------------- Total | 32 | 30 | 2 | 93 Gauss Execution Log file : /home/gsmig/18Jan/DSC/DSC/log/gaussexecutionlog.log Gauss Execution Error Log file : /home/gsmig/18Jan/DSC/DSC/log/gaussexecutionerror.log Verification finished in 38 seconds ********************** Verification Completed ****************************