摘要:本文介紹的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工具,嘗試問題是否解決,如果問題未解決可聯系相關維護人員支撐,
點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/546893.html
標籤:SQL Server
