簡述
本篇文章主要介紹如何使用 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 資料遷移同步,各位讀者朋友,如果你覺得還不錯,請點贊、評論加轉發吧
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/541987.html
標籤:其他
