簡述 本篇文章主要介紹如何使用 CloudCanal 構建一條 Oracle 到 PostgreSQL 的數據同步鏈路 技術要點 縮小的資料庫許可權要求 CloudCanal 對 Oracle 資料庫的高許可權要求,主要來自兩個面向 DBA 的操作,自動構建字典和 自動切換歸檔日誌,這兩個操作主要是讓用 ...
簡述
本篇文章主要介紹如何使用 CloudCanal 構建一條 Oracle 到 PostgreSQL 的數據同步鏈路
技術要點
縮小的資料庫許可權要求
CloudCanal 對 Oracle 資料庫的高許可權要求,主要來自兩個面向 DBA 的操作,自動構建字典和 自動切換歸檔日誌,這兩個操作主要是讓用戶使用更加自動化和便利,但是問題也比較明顯,對資料庫運維標準嚴苛的客戶來說,這些許可權對於我們的客戶是沒有的,所以新版本 CloudCanal ,通過參數配置,支持了關閉自動字典構建能力(預設打開) 和 關閉自動切換歸檔日誌能力(預設關閉)
多版本 schema 以支持位點回拉
對於關係型資料庫同步工具而言,增量數據本身往往和元數據分離,也就是消費到的增量數據和即時從資料庫裡面獲取的元數據不一定匹配(兩個時間點之間有DDL),所以維持一個多版本的元數據以應對增量數據解析是必要的, CloudCanal 以每天的 schema dump 為基準,輔以到當前位點的 DDL 語句列表,可構建出任何時間點的元數據(實際上是更加精確的 scn 位點),單個 DDL 前後的數據變更事件,能夠精確匹配到相對應的元數據進行解析, CloudCanal 才有可能在此版本產品上提供了回拉位點重覆消費一段時間增量數據的能力
支持的版本
源端 Oracle 支持的版本:10.X、11.X、12.X、18.X、19.X
對端 PostgreSQL 支持的版本:8.4、9.0、9.1、9.2、9.3、9.4、9.5、9.6、10.X、11.X、12.X、13.X、14.X 、15.X、16.X、17.X
支持的DDL&數據類型映射
- Oracle -> PostgreSQL 鏈路支持的DDL暫時只有 ALTER TABLE ,後續我們將不斷進行完善
- CloudCanal 結構遷移和數據遷移同步時會自動進行數據類型映射
類型映射見下表:
Oracle 欄位類型 | PostgreSQL 欄位類型 |
---|---|
CHAR、NCHAR、VARCHAR2、NVARCHAR、NVARCHAR2、ROWID、HTTPURITYPE | CHARACTER_VARYING |
LONG、CLOB、NCLOB | TEXT |
NUMBER_BIGINT | BIGINT |
NUMBER_DECIMAL、BINARY_FLOAT、BINARY_DOUBLE | NUMERIC |
FLOAT | REAL |
DATE、TIMESTAMP | TIMESTAMP_WITHOUT_TIME_ZONE、TIMESTAMP_WITHOUT_TIME_ZONE |
TIMESTAMP_WITH_TIME_ZONE、TIMESTAMP_WITH_LOCAL_TIME_ZONE | TIMESTAMP_WITH_TIME_ZONE |
XMLTYPE | XML |
Tips : 針對於 Oracle -> PostgreSQL 鏈路,源端 Oracle 不在上表的欄位類型暫時不支持
操作示例
準備工作
- 安裝最新版的 CloudCanal
- 準備好源端數據源和對端數據源以及源端數據
- CloudCanal 以 Oracle 作為源端進行數據遷移時,需要做一些額外的準備,具體參考ORACLE LogMiner同步準備
添加數據源
- 登錄 CloudCanal 平臺
- 數據源管理 -> 新增數據源
- 選擇自建資料庫 -> 選擇對應資料庫 -> 輸入相關信息 -> 測試連接-> 新增數據源
Tips :Oracle 相較於其他數據源有一些額外的參數可以調整
- logminerUser:ORACLE源端增量任務使用redo解析(logminer)方式時使用的賬號,需要CDB類型用戶
- logminerPasswd:ORACLE源端增量任務使用redo解析(logminer)方式時使用的賬號密碼
- logminerConnectType:ORACLE源端增量任務使用redo解析(logminer)方式時使用的連接方式,目前支持ORACLE_SID或ORACLE_SERVICE模式
- logminerSidOrService:ORACLE源端增量任務使用redo解析(logminer)方式時使用的連接標識符,和logminerConnectType參數配合使用,ORACLE_SID連接方式,則填寫sid,ORACLE_SERVICE連接方式,則填寫service name
- 添加 Oracle 和 PostgreSQL 之後可以在數據源列表中看到新增的數據源
創建同步任務
- 任務管理 -> 創建任務
- 源端選擇 Oracle 數據源,對端選擇 PostgreSQL數據源
- 分別點擊測試連接,選擇源端和對端需要訂閱的資料庫,選擇下一步
- 選擇 全量遷移 -> 勾選 增量同步 -> 根據自身機器配置選擇 任務規格
- 選擇 下一步
- 選擇源端需要同步的表,如果目標表顯示橙色表示對端不存在該表,任務創建之後,會自動生成該表
- 點擊 下一步
- 可以在左側選擇添加 數據過濾條件
- 點擊 下一步
- 點擊 創建任務
任務執行
任務創建並且啟動後,會自動進行如下的三個階段:
- 結構遷移:任務創建之後,如果對端沒有表結構,那麼 CloudCanal 會去自動在對端創建表結構
- 全量遷移:將源端存量數據整體遷移到對端
- 增量同步:全量遷移期間以及全量完成以後的源端增量數據變更會實時同步到對端
總結
本文簡單介紹瞭如何使用 CloudCanal 進行 Oracle -> PostgreSQL 數據遷移同步。各位讀者朋友,如果你覺得還不錯,請點贊、評論加轉發吧