高效資料移動指南 | 如何快速實現資料庫 SQL Server 到 Dameng 的資料同步?

Tapdata钛铂数据發表於2024-10-21

在現代企業中,資料無處不在,貫穿於各個業務環節和系統之間。無論是跨系統的資料整合、多地域的資料協同,還是實時應用的資料同步,資料的一致性和及時性都至關重要。在數字化轉型的過程中,如何確保不同系統、地域、裝置之間的資料同步,成為了企業面臨的重要挑戰。

本專題將基於實踐經驗,從常見需求入手,為大家介紹熱門資料來源與資料目標之間的資料同步(全量/增量)如何實現?瞭解如何快速搭建資料管道,實現資料的高效遷移與無縫同步。

本文教程為:SQL Server → Dameng 的資料同步任務。

在實際應用中,資料同步涉及諸多場景,如容災備份、應用改造/替代、資料庫版本升級/回退、資料庫替代、業務分流等,不同的場景在資料流向、同步需求、資料處理等方面會有不同的需求,需要針對性地選擇遷移工具和方案。

以 SQL Server 到 Dameng(DM) 的資料同步需求為例,和前一個教程類似,這些同步需求的增加,也印證了國產化浪潮下,對擁有自主智慧財產權的國產資料庫重視程度的升級。DM 資料庫和 SQL Server 結構存在差異,TSQL 語法也存在差異,DM 資料庫對此做了針對性的相容性適配,但在同步過程中,仍需注意資料型別的差異、索引與約束策略、事務管理機制以及批次資料匯入與匯出的效能最佳化。同時,字符集和編碼的相容性也是關鍵點,尤其是在多語言環境下。此外,在同步複雜資料和高併發場景中,也需根據 DM 的特性進行調整和最佳化,以確保資料的完整性和系統的高效執行。

一、什麼是 SQL Server?

SQL Server 是由微軟開發的一款企業級關係型資料庫管理系統,廣泛應用於各行業的資料庫管理和資料處理。SQL Server 支援全面的 SQL 標準,並提供豐富的開發介面和程式語言支援,適用於多種應用場景,包括聯機事務處理(OLTP)、聯機分析處理(OLAP)以及混合負載(HTAP)場景。SQL Server 以其強大的可擴充套件性、穩定的效能和豐富的功能特性,成為全球範圍內最常用的資料庫之一,深受各類企業使用者的信賴。

優勢

  • 微軟生態整合:與微軟的作業系統、開發工具(如 Visual Studio)和雲平臺(Azure)緊密整合,提供無縫的開發體驗和強大的擴充套件性。
  • 跨平臺支援:最新版本支援跨平臺執行,相容 Windows 和 Linux 作業系統。
  • 高效能與可擴充套件性:內建了先進的查詢最佳化器和記憶體資料庫技術,能夠處理大規模的資料負載和複雜查詢任務。
  • 資料安全與合規性:SQL Server 提供全面的資料加密、審計和備份解決方案,並符合多項國際安全和隱私標準,如 GDPR 和 HIPAA。
  • 豐富的分析與 BI 支援:SQL Server 提供整合的分析服務(SSAS)、報表服務(SSRS)和整合服務(SSIS),支援複雜的資料分析和商業智慧(BI)場景。

二、什麼是 Dameng?

Dameng 是新一代大型通用關係型資料庫,全面支援 SQL 標準和主流程式語言介面/開發框架。行列融合儲存技術,在兼顧 OLAP 和 OLTP 的同時,滿足 HTAP 混合應用場景。憑藉其豐富的產品架構、優異的效能表現、絕對的安全保證適應各種應用場景需求得到了眾多客戶的信任,不僅在國產資料庫市場中成功佔有一席之地,成為國產化替代的常見選項,也逐漸成為國際競爭中的一股重要力量。

優勢

  • 自主研發: 擁有完全自主智慧財產權,符合國家信創工程的戰略需求。
  • 跨平臺: 支援多種作業系統,如 Windows、Linux 以及國產作業系統。
  • 高效能: 最佳化了查詢和資料處理能力,適合處理大規模複雜資料。
  • 相容性強: 相容主流資料庫,如 Oracle、MySQL,便於資料遷移。
  • 安全性: 已透過公安部安全四級評測,是安全等級最高的商業資料庫之一。

三、方案選擇:如何實現 SQL Server → Dameng 的資料同步?

實現 SQL Server 到 Dameng 的資料同步的常見方式包括,手動構建資料管道或使用自動化工具:

手動構建資料管道

類似方案通常適用於小規模資料或需要高度自定義的場景。開發人員可以編寫自定義指令碼,利用 SQL Server 的資料匯出工具(如 BCP、SQLCMD)將資料匯出為 CSV 或其他通用格式,再透過 Dameng 的匯入命令(如 DMLOAD、DMRUL)將資料匯入目標資料庫。這種方式需要手動處理資料型別的轉換、索引和約束的遷移,以及語法的調整。

手動構建資料管道雖然靈活,但也存在一些限制。首先,操作複雜且工作量大、耗時久,開發人員需要編寫和維護大量指令碼,尤其在面對複雜資料結構時容易出錯。由於缺乏自動化工具的監控和錯誤處理機制,手動方式在出現問題時難以及時發現和恢復。此外,這種方法通常不具備實時同步能力,延遲較高,無法滿足需要快速反映資料變化的場景。同時,手動方案擴充套件性差,隨著資料規模增加或結構變化,指令碼需要頻繁調整,導致維護成本顯著增加。效能方面,單執行緒操作在處理大規模資料時效率較低,容易形成瓶頸。因此,手動資料管道更適合小規模、定製化的資料同步需求,而不適用於大規模或高實時性場景。

自動化工具

例如選擇使用 TapData 這樣的自動化資料整合平臺,只需三步就可以在幾分鐘內開啟所需的資料同步任務:

  • 將 SQL Server 設定為源連線
  • 將 Dameng 設定為目標連線
  • 定義要傳輸的資料以及傳輸頻率

TapData 內建 100+ 資料聯結器,提供了友好的使用者介面和強大的實時同步功能,無需編寫複雜的程式碼即可輕鬆實現資料的遷移和同步。這樣不僅節省了大量的時間和人力成本,還能保障資料同步過程的穩定性和可靠性。對於那些希望快速、高效地完成 SQL Server 到 Dameng 資料同步的企業和開發者來說,這樣的便捷工具無疑是一個理想的選擇。

四、TapData 高效同步完整教程

完成 TapData Agent 部署後,即可跟隨以下教程在 TapData 中新增源與目標的資料連線(支援版本:SQL Server 2005、2008、2008 R2、2012、2014、2016、2017、2019、2022;DM 7.x、8.x),並快速構建資料管道。(*涉及工具版本為 TapData 本地部署版)

版本指路:

點選登入 TapData Cloud
申請試用 TapData 本地部署版

① 準備工作(作為源庫)

資料來源:SQL Server

  1. 以管理員(例如 sa)身份,登入到 SQL Server Management Studio 或 sqlcmd。
  2. 啟用 SQL Server 代理服務
  3. 執行下述命令,啟用變更資料捕獲能力。
    a. 啟用資料庫級別的 CDC,在執行命令時,您需要替換 database_name 為真實的資料庫名。
    `-- 啟用變更資料捕獲能力
    USE database_name
    GO
    EXEC sys.sp_cdc_enable_db
    GO

-- 檢視是否啟用變更資料捕獲,is_cdc_enabled 值為 1 即表示已啟用該功能
SELECT [name], database_id, is_cdc_enabled
FROM sys.databases
WHERE [name] = N'database_name'
GO`

b. 啟用表級別的 CDC。
USE database_name GO EXEC sys.sp_cdc_enable_table @source_schema = N'schema_name', @source_name = N'table_name', @role_name = N'role_name', @supports_net_changes = 1 GO

  • database_name:資料庫名稱。
  • schema_name:架構名稱,例如 dbo
  • table_name:資料表的名稱。
  • role_name:可以訪問更改資料的角色,如不希望使用設定角色,可將其設定為 NULL,如果在啟用增量複製時指定了角色,則需確保資料庫使用者具有適當的角色,以便 TapData 可以訪問增量複製表。
  1. 依次執行下述格式的命令,建立用於資料複製/轉換任務的使用者。
    `-- 建立登入賬戶
    CREATE LOGIN login_name WITH PASSWORD='passwd', default_database=database_name;

-- 建立資料庫操作使用者
CREATE USER login_name FOR LOGIN login_name with default_schema=schema_name;`

  • login_name:登入名,即使用者名稱。
  • passwd:使用者密碼。
  • database_name:與登入關聯的預設資料庫,即要登入的資料庫名。
  • schema_name:資料庫架構名稱(例如 dbo),它充當物件(例如表、檢視、過程和函式)的名稱空間或容器。相關資料,見建立資料庫架構

下述示例表示建立一個名為 tapdata 的使用者,指定登入的資料庫為 demodata,架構為 dbo

`-- 建立登入賬戶
CREATE LOGIN tapdata WITH password='Tap@123456', default_database=demodata;

-- 建立資料庫操作使用者
CREATE USER tapdata FOR LOGIN tapdata with default_schema=dbo;`

  1. 為剛建立的賬號授予許可權,您也可以基於業務需求自定義許可權控制。

`-- 授予讀取指定架構下所有表的許可權
GRANT SELECT ON SCHEMA::schema_name TO tapdata;

-- 授予讀取變更資料捕獲的許可權,其架構固定為 cdc
GRANT SELECT ON SCHEMA::cdc TO tapdata;`

  • login_name:登入名,即使用者名稱。
  • schema_name:資料庫架構名稱(例如 dbo),它充當物件(例如表、檢視、過程和函式)的名稱空間或容器。

下述示例表示授予 tapdata 使用者,擁有 dbo 架構和 cdc 架構下所有表的讀取許可權。
GRANT SELECT ON SCHEMA::dbo TO tapdata; GRANT SELECT ON SCHEMA::cdc TO tapdata;

  1. (可選)如需向從節點讀取增量資料以實現資料同步,您需要為從節點設定上述步驟。

資料目標:Dameng

在連線 DM 之前,還需完成資料庫賬號的授權等準備工作。TapData 同時支援 DM 作為源或目標,當 DM 作為目標庫時,準備工作包括:

  1. 以擁有 DBA 許可權的身份登入達夢資料庫。

  2. 依次執行下述格式的命令,建立用於資料複製/轉換任務的使用者。

CREATE USER username IDENTIFIED BY "password" DEFAULT TABLESPACE table_space_name;

  • username:使用者名稱
  • password:密碼
  • table_space_name:表空間名稱
  1. 為剛建立的賬號授予許可權,也可以基於業務需求自定義許可權控制。
    -- 替換下述命令中的 username 為真實的使用者名稱 GRANT CREATE TABLE, DELETE TABLE, INSERT TABLE, SELECT TABLE, UPDATE TABLE, CREATE INDEX TO username;

② 建立 SQL Server 的連線

  1. 進入 TapData 控制檯,在左側導航欄,單擊連線管理
  2. 單擊頁面右側的建立,在彈框中,搜尋並選擇 SQL Server。
  3. 在跳轉到的頁面,根據下述說明填寫 SQL Server 連線資訊:

  • 連線資訊設定
    • 連線名稱:填寫具有業務意義的獨有名稱。
    • 連線型別:支援將 SQL Server 作為源或目標庫。
    • 資料庫地址:資料庫連線地址。
    • :資料庫的服務埠。
    • 資料庫名稱:資料庫名稱,即一個連線對應一個資料庫,如有多個資料庫則需建立多個資料連線。
    • 賬號:資料庫的賬號。
    • 密碼:資料庫賬號對應的密碼。
    • Schema:Schema 名稱。
  • 高階設定
    • 其他連線串引數:額外的連線引數,預設為空。
    • 時間型別的時區:預設為資料庫所用的時區,您也可以根據業務需求手動指定。
    • 使用 SSL/TLS:選擇是否開啟 SSL 連線資料來源,可進一步提升資料安全性,開啟該功能後還需要上傳 CA 證書、證書密碼和伺服器主機名資訊,相關檔案已在開啟 SSL 連線中獲取。
    • 共享挖掘挖掘源庫的增量日誌,可為多個任務共享源庫的增量日誌,避免重複讀取,從而最大程度上減輕增量同步對源庫的壓力,開啟該功能後還需要選擇一個外存用來儲存增量日誌資訊。
    • 包含表:預設為全部,您也可以選擇自定義並填寫包含的表,多個表之間用英文逗號(,)分隔。
    • 排除表:開啟該開關後,可以設定要排除的表,多個表之間用英文逗號(,)分隔。
    • Agent 設定:預設為平臺自動分配,您也可以手動指定 Agent。
    • 模型載入頻率:資料來源中模型數量大於 1 萬時,TapData 將按照設定的時間定期重新整理模型。
  1. 單擊連線測試,測試透過後單擊儲存

*提示:如提示連線測試失敗,請根據頁面提示進行修復。

③ 建立 Dameng 的連線

  1. 參照 SQL Server 連線建立流程,完成 DM 連線配置資訊填寫,新增資料目標:

  1. 測試 DM 的連線:

④ 建立資料複製/開發任務

  1. 左側導航欄點選資料複製,並點選右側建立:

  1. 進入 DAG 頁面,構建資料複製任務,透過拖拉拽的方式新增源與目標節點,並連線源與目標

  1. 單擊源與目標節點,即可按需對二者進行設定:

  1. 儲存任務

⑤ 任務啟動與監控

  1. 啟動任務,任務全量同步正常執行:

  1. 增量同步開啟

以上,便是藉助 TapData 快速實現資料庫 SQL Server 到 Dameng 的全、增量同步的模擬教程。

後續,我們還將持續輸出本專題內容,歡迎關注 TapData 官方公眾號,瞭解更多。

【推薦閱讀】

  • 如何高效整合分散資料,構建統一的實時資料平臺?
  • 流式處理 vs 批處理,新資料時代的資料處理技術該如何選擇?
  • TapData 醫療美容行業數字化白皮書上線
  • 戰略資訊 | TapData 牽手思想科技,開啟資料管理新篇章!

相關文章