DSC:數倉SQL指令碼遷移的神奇工具

華為雲開發者聯盟發表於2023-03-14
摘要:本文介紹的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目錄結構檔案如下:

DSC:數倉SQL指令碼遷移的神奇工具

介面即為命令列介面,切換路徑至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:數倉SQL指令碼遷移的神奇工具DSC:數倉SQL指令碼遷移的神奇工具

DSC執行流程如下:

DSC:數倉SQL指令碼遷移的神奇工具

先根據源庫內容進行自定義功能配置,包括是否需要執行scripts目錄中包含一些自定義資料庫指令碼,配置config中的自定義引數。然後命令列執行啟動命令,進行指令碼SQL轉換,最後從輸出目錄獲取結果。如果遷移過程遇到問題,可以檢視日誌。

結果展示介面(以MySQL為例):

DSC:數倉SQL指令碼遷移的神奇工具

MySQL遷移中,介面會顯示遷移路徑下總檔案數,有效檔案數,遷移成功檔案數和遷移失敗檔案數以及日誌存放路徑。不同模組下顯示介面略有差異。

轉換結果展示(左為原始檔內SQL,右為經DSC轉換後的結果):

DSC:數倉SQL指令碼遷移的神奇工具

常見問題彙總、歸納以及解決辦法

常見故障處理可見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工具,嘗試問題是否解決,如果問題未解決可聯絡相關維護人員支撐。

 

點選關注,第一時間瞭解華為雲新鮮技術~

相關文章