暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

『 TechTalk 』GaussDB(DWS)DSC工具系列:DSC工具初识

GaussDB DWS 2023-07-14
771


小帅哥

华为云数仓技术专家


读完需要

10
分钟

速读仅需 5 分钟











本文介绍的DSC工具是针对数据库切换时面临的迁移任务而开发的免安装命令行工具。目的是提供简单、快速、可靠的SQL脚本迁移服务。





当从其它数据库切换到GaussDB(DWS)数据库时可能会面临迁移任务,其中包括SQL脚本的迁移。SQL脚本的迁移是一个复杂、高风险、耗时的过程。DSC针对这种情况,应运而生。DSC(Database Schema Convertor)是一款可执行在Linux或Windows操作系统上的命令行工具。其目的便是提供简单、快速、可靠的SQL脚本迁移服务,通过内置语法迁移逻辑将源数据库SQL脚本转换为适用于GaussDB(DWS)数据库的SQL脚本。

DSC的获取可参考华为云文档:客户端工具下载🔗扫描下方二维码跳转链接

官网提供DSC旧版本,新版DSC工具可通过support进行下载。🔗扫描下方二维码跳转链接

DSC是一款免安装工具,下载压缩包后解压缩即可使用。关于DSC还有一些相关的硬件、软件需求,详情可以点击文末阅读原文,获取DSC官方文档进行了解。

DSC包含7个文件夹,一个runDSC.bat批处理可执行文件和一个runDSC.sh脚本文件。runDSC用于调用执行DSC程序。

DSC目录结构文件如下:

界面即为命令行界面,切换路径至runDSC.bat/runDSC.sh的同级目录即可。

其中bin文件夹下存储DSC转换逻辑的jar包,最终实现脚本转换就是通过调用jar包实现。

config文件夹下包含一些基础配置,包含用户可自定义配置迁移的文件。

模块包括MySQL、TD、Oracle,涉及自定义迁移内容根据模块不同内容也不尽相同。MySQL模块中,自定义配置内容包括默认数据库名称、索引名重命名、数据映射规则、函数转换等内容。TDOracle中针对迁移过程中的不兼容语法也有相应配置参数。

lib文件夹下包含DSC使用的外部依赖。log文件夹下留存DSC转换过程中的日志记录,包括dsc迁移日志和迁移失败日志。日志不会自动清空,每次执行DSC会对日志进行追加写。下次执行DSC命令时,需要手动删除文件夹内内容进行日志清空。

input文件夹下存放要进行迁移的SQL脚本,output文件夹下为DSC进行转换后的SQL脚本结果。

scripts文件夹下包含一些自定义数据库脚本,用户可以使用自定义数据库的SQL脚本从Teradata/Oracle迁移那些不直接存在于目标数据库的关键字。如果需要用到,迁移之前,这些脚本必须在每个目标数据库中执行一次。

可在Windows和Linux操作系统中执行runDSC.sh或runDSC.bat命令进行迁移,命令格式如下:

./runDSC.sh 相关命令行参数(Linux操作系统) runDSC.bat 相关命令行参数(Windows操作系统)

相关命令行参数包括以下8个:




①--source-db


缩写

-S


说明

源数据库


参数取值
  • Oracle

  • Teradata

  • Netezza

  • MySQL

  • DB2


默认值

N/A


示例

--source-db Oracle

-S Oracle



②--input-folder


缩写

-I


说明

脚本的输入文件夹


默认值

DSC下的input目录为默认目录


示例

--input-folder /home/testmigration/Documentation/input

(or)

-I /home/testmigration/Documentation/input



③--output-folder


缩写

-O


说明

迁移后脚本的输出文件夹


默认值

DSC下的output目录为默认目录


示例

--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。


参数取值
  • ddl(Bulk)

  • plsql(Blogic)


默认值

Bulk


示例

--conversion-type ddl

-M ddl



⑥--log-folder


缩写

-L


说明

日志文件路径


示例

--log-folder home/testmigration/Documentation
(or)
-L home/testmigration/Documentation



⑦--version-number


缩写

-VN


说明

Oracle必选参数,选择Oracle版本


参数取值

Oracle


示例

--version-number

-V1R8_330



⑧--target-db


缩写

-T


说明

目标数据库


参数取值
  • gaussdbT

  • gaussdbA


默认值

gaussdbA


示例

--target-db gaussdbT 

(或)
-T gaussdbT

DSC执行流程如下:

先根据源库内容进行自定义功能配置,包括是否需要执行scripts目录中包含一些自定义数据库脚本,配置config中的自定义参数。然后命令行执行启动命令,进行脚本SQL转换,最后从输出目录获取结果。如果迁移过程遇到问题,可以查看日志。

结果展示界面(以MySQL为例):

MySQL迁移中,界面会显示迁移路径下总文件数,有效文件数,迁移成功文件数和迁移失败文件数以及日志存放路径。不同模块下显示界面略有差异。

转换结果展示(左为源文件内SQL,右为经DSC转换后的结果):

常见故障处理可见DSC官方手册《DSC故障处理》一节。

在使用过程中常见的问题有以下几个可供参考:


问题一

在安装过程中,提示“ Root privileged users are not allowed to install the DSC for Linux. ”

解决办法:拥有root权限的用户不得在Linux中安装和执行DSC。建议使用没有root权限的用户来安装和操作DSC。


问题二

转换结果中中文有乱码

解决办法:修改config中对应模块下的编码方式。以MySQL为例,修改config/features-mysql.properties中的table.database.encoding参数。以及建议将input路径下的文件改为UTF8编码方式规避中文乱码。

问题三

SQL存在转换失败的问题:DSC手册中记录可转换的内容转换失败或转换错误。

解决办法:先尝试通过support获取最新DSC工具,尝试问题是否解决,如果问题未解决可联系相关维护人员支撑。

往期精彩回顾


恭喜!大数据“星河”标杆案例奖+



戳阅读原文,获取DSC官方文档

文章转载自GaussDB DWS,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论