更新时间:2023-03-17 GMT+08:00

数据库模式迁移

功能

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>

参数说明

表1 参数列表

全称

缩写

数据类型

说明

范围

默认值

示例

--source-db

-S

字符串

源数据库。

  • Oracle
  • Teradata
  • Netezza
  • MySQL
  • DB2

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
  • Perl

SQL

--application-lang Perl

-A Perl

--conversion-type

-M

字符串

迁移类型。用户需根据输入脚本指定该参数:

Bulk:迁移DML和DDL脚本。

BLogic:迁移业务逻辑,如过程和函数。

BLogic仅适用于Oracle PL/SQL。

  • Bulk
  • BLogic

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

字符串

目标数据库

  • gaussdbT
  • gaussdbA

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建立

  1. 登录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

  2. 运行Setup目录下的所有文件。

命令:

sh runDSC.sh -S oracle -M blogic -I <input path> 
sh runDSC.sh -S oracle -M bulk -I <input path>

配置详情

  1. 设置GaussDBSQLExec=True。并更新gaussdb.properties文件。
  2. 创建新用户(T),新数据库(A)。添加所有schema模式。

迁移后验证

Database Schema Convertor转换完含有SQL语句的源文件后,在目标GaussDB上执行转换后的文件,并生成文件执行成功和失败的明细报告。

Database Schema Convertor完成迁移后,会调用迁移后验证脚本(通过配置项控制)。此验证脚本(配置详情见配置文件)会连接到目标GaussDB数据库并执行。

迁移后验证脚本会连接到目标GaussDB数据库(具体信息在配置文件中配置),并执行该脚本。

  1. 配置config文件夹下的application.properties

    在GaussDB中执行迁移脚本的取值范围:true/false,默认值:false。

    将executesqlingauss设置为true。

    true: executesqlingauss将在GaussDB上执行迁移脚本。

  2. 配置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客户端的依赖关系:

    1. 由于在GaussDB上执行脚本时需依赖gsql(GaussDB(DWS)),为保证Database Schema Convertor正常运行,需在安装了GaussDB实例或客户端(gsql)的节点上运行Database Schema Convertor,且进行验证的用户具有执行gsql或zsql命令的权限。
    2. 由于Gauss数据库实例/客户端只能安装在Linux操作系统中,因此只能用于Linux环境下的功能验证。
    3. 在远程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 ****************************