天天看點

5分鐘搞定MySQL/PostgreSQL/Oracle到StarRocks資料遷移同步-CloudCanal實戰常見FAQ

簡述

CloudCanal 2.1.0.x 版本開始支援 StarRocks 作為對端的資料遷移同步能力

本文通過 MySQL->StarRocks 的資料遷移同步案例簡要介紹這個源端的能力。鍊路特點:

  • 結構遷移、全量遷移、增量同步(資料)、資料校驗俱全
  • 流程全自動化

使用須知

  • 支援的StarRocks版本為: 1.18.x、1.19.x、2.0.x
  • 支援的源端資料源類型為: Oracle/PostgreSQL/Greenplum/MySQL,本文主要以 MySQL 源端為例說明使用方法。
  • 校驗任務隻支援主鍵模型的 StarRocks 表,源端表需要有主鍵

技術點

基于 StreamLoad 的導入方式

StarRocks 提供了多種導入方式。CloudCanal 采用了 StreamLoad 的方式進行導入,源端的消息會轉成位元組流,通過 HTTP 協定發往 StarRocks。

相比直接通過 SQL 寫入的方式,StreamLoad 方式會有更好的性能,寫入的資料直接經 FE 轉發給 BE 處理。如果直接采用 SQL 寫入,在 FE 側,會有額外的 SQL 解析開銷。

tips: CloudCanal預設采用 \u0001、\u0003作為 StreamLoad 導入的列分隔符和行分隔符。

豐富的配置

CloudCanal 提供了 StreamLoad 可配置的豐富參數,包括:

  • connectionTimeoutSec 參數
    • 表示導入請求的逾時時間(機關:秒)
  • loadExecMemLimitMb 參數
    • 表示導入記憶體限制
  • timezone 參數
    • 預設東八區,指定導入所使用的時區
    • 該參數會影響所有導入涉及的和時區有關的函數結果。

可配置的寫入停頓控制

過快的寫入會導緻 StarRocks 來不及 compaction,進而産生異常。CloudCanal 提供了兩個任務參數,支援在一批資料寫入後自動停頓一段時間,避免這種問題。參數為:

  • fullBatchWaitTimeMs 參數
    • 全量批之間寫入停頓間隔,機關毫秒,預設 10ms
  • increBatchWaitTimeMs 參數
    • 增量批之間寫入停頓間隔,機關毫秒,預設 100ms

CloudCanal 任務詳情頁,點選 參數修改,即可調整

5分鐘搞定MySQL/PostgreSQL/Oracle到StarRocks資料遷移同步-CloudCanal實戰常見FAQ
5分鐘搞定MySQL/PostgreSQL/Oracle到StarRocks資料遷移同步-CloudCanal實戰常見FAQ

主鍵模型

StarRocks 作為實時數倉,采用主鍵模型或者聚合模型較多。CloudCanal預設采用主鍵模型,能夠實時同步源端的 INSERT/UPDATE/DELETE。

tips: 表結構對于實時數倉實際讀寫性能影響非常大,CloudCanal 預設提供的結構遷移能力并沒有提供諸如分區、分桶等設定,使用者如需使用,可按照需求提前建立好表結構,再通過 CloudCanal 進行資料遷移同步。

UPDATE/DELETE 操作的處理

基于 StreamLoad 的寫入方式,實際寫入對端的操作均為 INSERT。CloudCanal 同步時會自動将 UPDATE/DELETE 轉成INSERT語句,并修改 __ops 值,StarRocks 會自動進行compaction。

轉義支援

StarRocks 不支援 \n 等特殊符号寫入,CloudCanal 任務通過參數設定(enableEscape參數) 開啟自動轉義。

操作示例

  • CloudCanal 社群版部署,參見 社群版安裝文檔
  • 準備好源端和目标端資料庫以及對應的測試資料

添加資料源

  • 登入 CloudCanal 平台
  • 資料源管理->新增資料源
  • 選擇自建資料庫中StarRocks
    5分鐘搞定MySQL/PostgreSQL/Oracle到StarRocks資料遷移同步-CloudCanal實戰常見FAQ
  • Client位址: 為StarRocks提供給MySQL Client的服務端口,CloudCanal主要用其查詢庫表的中繼資料資訊
  • Http位址: Http位址主要用于接收stream load的http請求

任務建立

  • 任務管理->任務建立
  • 選擇 源 和 目标 資料庫
  • 點選 下一步
    5分鐘搞定MySQL/PostgreSQL/Oracle到StarRocks資料遷移同步-CloudCanal實戰常見FAQ
  • 選擇 增量同步,并且啟用 全量資料初始化
  • 不勾選 DDL 同步(暫不支援)
  • 點選下一步
    5分鐘搞定MySQL/PostgreSQL/Oracle到StarRocks資料遷移同步-CloudCanal實戰常見FAQ
  • 選擇訂閱的表,結構遷移自動建立的表為主鍵模型的表,是以暫不支援無主鍵表
  • 點選下一步
    5分鐘搞定MySQL/PostgreSQL/Oracle到StarRocks資料遷移同步-CloudCanal實戰常見FAQ
  • 配置列映射
  • 點選下一步
    5分鐘搞定MySQL/PostgreSQL/Oracle到StarRocks資料遷移同步-CloudCanal實戰常見FAQ
  • 建立任務
    5分鐘搞定MySQL/PostgreSQL/Oracle到StarRocks資料遷移同步-CloudCanal實戰常見FAQ
  • 檢視任務狀态。任務建立後,會自動完成結構遷移、全量、增量階段。
    5分鐘搞定MySQL/PostgreSQL/Oracle到StarRocks資料遷移同步-CloudCanal實戰常見FAQ

任務性能調優(option)

對于高流量的場景,建議使用 4G 及以上的任務規格配置,并且對相關參數進行調優,調優建立在任務無 GC 問題、對端 StarRocks 沒有 compaction 瓶頸的情況下。

  • 任務詳情->功能清單->參數設定
    5分鐘搞定MySQL/PostgreSQL/Oracle到StarRocks資料遷移同步-CloudCanal實戰常見FAQ
  • 全量遷移參數調整
    5分鐘搞定MySQL/PostgreSQL/Oracle到StarRocks資料遷移同步-CloudCanal實戰常見FAQ
  • 增量同步參數調整
    5分鐘搞定MySQL/PostgreSQL/Oracle到StarRocks資料遷移同步-CloudCanal實戰常見FAQ

總結

常見FAQ

更多精彩

  • 5分鐘搞定 MySQL 到 ClickHouse 寬表建構和同步-CloudCanal實戰
  • 5分鐘搞定 MySQL 到 ElasticSearch 寬表建構和同步-CloudCanal實戰
  • 5分鐘搞定 MySQL 到 ClickHouse 實時資料同步進階篇-CloudCanal實戰
  • 5分鐘搞定 MySQL 到 ElasticSearch 遷移同步-CloudCanal 實戰
  • 5分鐘搞定 MySQL 到 MySQL 異構線上資料遷移同步-CloudCanal 實戰
  • 5分鐘搞定 MySQL 到 TiDB 的資料同步 - CloudCanal實戰
  • 5分鐘搞定SQLServer到MySQL資料遷移同步-CloudCanal實戰 - CloudCanal實戰

繼續閱讀