DSC:数仓 SQL 脚本迁移的神奇工具
本文分享自华为云社区《GaussDB(DWS)DSC工具系列:DSC工具初识【玩转PB级数仓GaussDB(DWS)】》,作者:积少成多 。
DSC 背景介绍与 DSC 介绍
当客户从其它数据库切换到 DWS 数据库时可能会面临迁移任务,其中包括 SQL 脚本的迁移。SQL 脚本的迁移是一个复杂、高风险、耗时的过程。DSC 针对这种情况,应运而生。DSC(Database Schema Convertor)是一款可执行在 Linux 或 Windows 操作系统上的命令行工具。其目的便是提供简单、快速、可靠的 SQL 脚本迁移服务,通过内置语法迁移逻辑将源数据库 SQL 脚本转换为适用于 DWS 数据库的 SQL 脚本。
DSC 的获取与安装
DSC 的获取可参考华为云文档:客户端工具下载(https://support.huaweicloud.com/tg-dws/dws_07_0002.html)。官网提供 DSC 旧版本,新版 DSC 工具可通过 support 进行下载。(https://support.huawei.com/enterprise/zh/cloud-computing/hcs-dws-service-pid-251527524/software/258068937/?idAbsPath=fixnode01|22658044|7919788|9856606|251527524)
DSC 是一款免安装工具,下载压缩包后解压缩即可使用。关于 DSC 还有一些相关的硬件、软件需求,详情可以参考 DSC 的官方文档进行了解。(https://support.huaweicloud.com/tg-dws/mt_tool_index.html)
DSC 结构
DSC 包含 7 个文件夹,一个 runDSC.bat 批处理可执行文件和一个 runDSC.sh 脚本文件。runDSC 用于调用执行 DSC 程序。
DSC 目录结构文件如下:
界面即为命令行界面,切换路径至 runDSC.bat/runDSC.sh 的同级目录即可。
其中 bin 文件夹下存储 DSC 转换逻辑的 jar 包,最终实现脚本转换就是通过调用 jar 包实现。
config 文件夹下包含一些基础配置,包含用户可自定义配置迁移的文件。模块包括 MySQL、TD、Oracle,涉及自定义迁移内容根据模块不同内容也不尽相同。MySQL 模块中,自定义配置内容包括默认数据库名称、索引名重命名、数据映射规则、函数转换等内容。TD、Oracle 中针对迁移过程中的不兼容语法也有相应配置参数。lib 文件夹下包含 DSC 使用的外部依赖。
log 文件夹下留存 DSC 转换过程中的日志记录,包括 dsc 迁移日志和迁移失败日志。日志不会自动清空,每次执行 DSC 会对日志进行追加写。下次执行 DSC 命令时,需要手动删除文件夹内内容进行日志清空。
input 文件夹下存放要进行迁移的 SQL 脚本,output 文件夹下为 DSC 进行转换后的 SQL 脚本结果。
scripts 文件夹下包含一些自定义数据库脚本,用户可以使用自定义数据库的 SQL 脚本从 Teradata/Oracle 迁移那些不直接存在于目标数据库的关键字。如果需要用到,迁移之前,这些脚本必须在每个目标数据库中执行一次。
DSC 使用
用户可在 Windows 和 Linux 操作系统中执行 runDSC.sh 或 runDSC.bat 命令进行迁移,命令格式如下:
./runDSC.sh 相关命令行参数(Linux 操作系统) / runDSC.bat 相关命令行参数(Windows 操作系统)
相关命令行参数包括以下 8 个:
DSC 执行流程如下:
先根据源库内容进行自定义功能配置,包括是否需要执行 scripts 目录中包含一些自定义数据库脚本,配置 config 中的自定义参数。然后命令行执行启动命令,进行脚本 SQL 转换,最后从输出目录获取结果。如果迁移过程遇到问题,可以查看日志。
结果展示界面(以 MySQL 为例):
MySQL 迁移中,界面会显示迁移路径下总文件数,有效文件数,迁移成功文件数和迁移失败文件数以及日志存放路径。不同模块下显示界面略有差异。
转换结果展示(左为源文件内 SQL,右为经 DSC 转换后的结果):
常见问题汇总、归纳以及解决办法
常见故障处理可见 DSC 官方手册《DSC 故障处理》一节。
在使用过程中常见的问题有以下几个可供参考:
1、在安装过程中,提示“ Root privileged users are not allowed to install the DSC for Linux. ”
解决办法:拥有 root 权限的用户不得在 Linux 中安装和执行 DSC。建议使用没有 root 权限的用户来安装和操作 DSC。
2、转换结果中中文有乱码
解决办法:修改 config 中对应模块下的编码方式。以 MySQL 为例,修改 config/features-mysql.properties 中的 table.database.encoding 参数。以及建议将 input 路径下的文件改为 UTF8 编码方式规避中文乱码。
3、SQL 存在转换失败的问题:DSC 手册中记录可转换的内容转换失败或转换错误。
解决办法:先尝试通过 support 获取最新 DSC 工具,尝试问题是否解决,如果问题未解决可联系相关维护人员支撑。
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/62d6ef89e7d9135174783c5d2】。文章转载请联系作者。
评论