簡述 CloudCanal當前最新版本已經支持源端Oracle、SqlServer等主流傳統資料庫作為源端遷移同步數據到StarRocks來構建實時數倉。本文簡要介紹如何快速構建一條Oracle->StarRocks數據鏈路。 技術要點 基於StreamLoad的導入方式 CloudCanal 採用 ...
簡述
CloudCanal當前最新版本已經支持源端Oracle、SqlServer等主流傳統資料庫作為源端遷移同步數據到StarRocks來構建實時數倉。本文簡要介紹如何快速構建一條Oracle->StarRocks數據鏈路。
技術要點
基於StreamLoad的導入方式
CloudCanal 採用了 StreamLoad 的方式進行導入,源端的消息會轉成位元組流,最後會以批量發送的形式通過 HTTP 協議發往 StarRocks。
CloudCanal 預設採用 json 格式來進行StreamLoad導入,如果用戶內容特殊字元較少,也可以開啟 csv 格式導入,分隔符可以通過參數 columnSeparator 和 lineSeparator 設置。
基於 StreamLoad 的寫入方式,實際寫入對端的操作均為 INSERT,CloudCanal 同步時會自動將 UPDATE / DELETE 轉成 INSERT 語句,並修改 __op 值,StarRocks會自動進行數據合併。
支持常用DDL實時同步
Oracle -> StarRocks 支持新增列、刪除列DDL。DDL實時同步到對端時會自動轉換成StarRocks相容的語法,數據類型也會根據映射關係進行自動轉換。
編輯訂閱功能
CloudCanal 提供了便利的修改訂閱能力。對於一個已經創建好的正在運行的增量同步任務,如果由於業務需求有新增表需要訂閱,可以在原有任務的基礎上新增需要訂閱的表,生成子任務,自動完成全量、增量遷移同步,在完成後會子任務會自動與原有的任務合併。
數據類型映射
CloudCanal結構遷移和數據遷移同步時會自動進行數據類型映射。類型映射見下表:
Oracle類型 | StarRocks類型 |
---|---|
CHAR | VARCHAR |
NCHAR | VARCHAR |
VARCHAR2 | VARCHAR |
NVARCHAR | VARCHAR |
NVARCHAR2 | VARCHAR |
LONG | STRING |
NUMBER_BIGINT | BIGINT |
NUMBER_DECIMAL | DECIMAL |
FLOAT | FLOAT |
BINARY_FLOAT | DECIMAL |
BINARY_DOUBLE | DECIMAL |
CLOB | STRING |
NCLOB | STRING |
DATA | DATETIME |
TIMESTAMP | DATETIME |
TIMESTAMP_WITH_TIME_ZONE | DATETIME |
TIMESTAMP_WITH_LOCAL_TIME_ZONE | DATETIME |
INTERVAL_YEAR_TO_MONTH | DATETIME |
INTERVAL_DAY_TO_SECOND | DATETIME |
ROWID | STRING |
PLSQL_BOOLEAN | BOOLEAN |
XMLTYPE | STRING |
HTTPURITYPE | STRING |
操作示例
準備CloudCanal
- 安裝好CloudCanal
- 準備好源端和目標端資料庫及對應數據
Oracle源端前置準備
CloudCanal在做Oracle作為源端的數據遷移同步時,需要做一些前置準備。具體可以參考 ORACLE LogMiner同步準備。
添加數據源
- 登錄CloudCanal平臺
- 數據源管理->添加數據源
- 創建源端數據源:選擇自建數據源,選擇Oracle,並填寫相關資料庫信息,點擊新增數據源確定創建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
- 創建目的端數據源:選擇自建數據源,選擇StarRocks,並填寫相關資料庫信息,點擊新增數據源確定創建StarRocks數據源
- Client地址:StarRocks提供的MySQLClient服務埠,CloudCanal主要用其查詢庫表的元數據信息,對應StarRocks的QueryPort,預設埠為9030
- Http地址:Http地址主要用於接收streamload的http請求。此處可以填寫StarRocks BE節點的埠,預設為8030;如需負載均衡也支持直接填寫FE的地址和埠,StarRocks的FE會自動處理stream load的http請求
- 查看數據源是否創建成功
任務創建
- 任務管理->創建任務
- 選擇集群
- 源端選擇剛添加的Oracle數據源,目標端選擇StarRocks數據源,分別點擊測試連接按鈕以測試資料庫連通性和獲取schema級別元信息,顯示連接成功後,設置資料庫映射關係
- StarRocks的結構遷移支持用戶自定義分桶數等自定義建表信息
- 點擊下一步
- 選擇增量同步,並且勾選全量初始化
- 點擊下一步
- 選擇訂閱的表
- 點擊下一步
- 配置列映射
- 點擊下一步
- 點擊創建任務
- 任務創建成功並啟動後,會自動執行結構遷移、全量遷移、增量同步
總結
本文簡單介紹瞭如何使用CloudCanal進行Oracle->StarRocks 數據遷移同步。各位讀者朋友,如果你覺得還不錯,請點贊、評論加轉發吧。