摘要:本文介紹的DSC工具是針對資料庫切換時面臨的遷移任務而開發的免安裝命令行工具。目的是提供簡單、快速、可靠的SQL腳本遷移服務。 本文分享自華為雲社區《GaussDB(DWS)DSC工具系列:DSC工具初識【玩轉PB級數倉GaussDB(DWS)】》,作者:積少成多 。 DSC背景介紹與DSC介 ...
摘要:本文介紹的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工具,嘗試問題是否解決,如果問題未解決可聯繫相關維護人員支撐。