簡述
本文主要介紹如何使用 CloudCanal 構建一條 MySQL 到 Greenplum / PostgreSQL 的資料同步鏈路,
支持版本
源端 MySQL 支持的版本為:5.6、5.7、8.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
對端 Greenplum 支持的版本為:6.X
技術點
流程自動化&功能豐富
支持創建結構遷移、全量遷移、增量同步、資料校驗、資料訂正型別的任務,結構遷移、全量遷移和增量同步可作為一個任務的多個階段自動化進行,
新增表自動遷移同步
CloudCanal 提供了修改訂閱的能力,對于一個正在運行的增量同步的任務,CloudCanal 提供了動態修改訂閱的方式,可以對一個正在運行的增量同步任務新增需要訂閱的表,對于新增的表,CloudCanal 會自動遷移、同步其資料,
自定義資料處理
用戶在遷移、實時同步期間如需要對傳輸的資料行進行自定義的加工可以采用 CloudCanal提供的自定義資料處理能力,這對于實時寬表構建、新增動態列、基于微服務、快取的資料清洗等資料處理場景都非常有幫助,關于更多自定義資料的使用方式可以參考:資料處理插件使用方式,
支持多種 DDL
MySQL -> Greenplum / PostgreSQL 鏈路支持的DDL有 Create Table、Drop Table、Alter Table、Rname Table 、Create Index ,
支持高性能寫入模式
CloudCanal 中默認采用 PostgreSQL/Greenplum的驅動通過JDBC的方式進行批量寫入,如果用戶對性能要求很苛刻,可以嘗試開啟基于Copy模式的高性能寫入模式,在Copy寫入模式下,寫入性能相比采用JDBC的方式有很大的提升,了解基于Copy的高性能寫入模式可以參考:開啟PG/GP高性能寫入,
支持地理資訊型別寫入
PostgreSQL和Greenplum對于地理資訊型別的處理比較友好,因此常常被用于存盤地理資訊資料,CloudCanal 支持遷移同步源端地理資訊型別的資料并且對其做自動轉換后寫入對端,了解更多 CloudCanal對于地理資訊型別的處理可以參考文章:CloudCanal地理資料同步與處理,
結構遷移型別自動處理
異構資料源之間對型別的處理都存在差異,CloudCanal 會進行自動的轉化和優化,例如在 MySQL 中可以定義的VARCHAR(0)資料型別,在 PostgreSQL / Greenplum 中不支持,CloudCanal 結構遷移時會自動將源端MySQL 的VARCHAR(0)型別映射為 VARCHAR(1),
資料型別映射
CloudCanal 結構遷移和資料遷移同步時會自動進行資料型別映射,型別映射見下表:
| MySQL 型別 | PostgreSQL / Greenplum 型別 |
|---|---|
| BIT | BIT |
| TINYINT | SMALLINT |
| SMALLINT | SMALLINT |
| MEDIUMININT | INTEGER |
| INT | INTEGER |
| BIGINT | BIGINT |
| DECIMAL | NUMERIC |
| FLOAT | NUMERIC |
| DOUBLE | NUMERIC |
| DATE | TIMESTAMP WITHOUT TIME ZONE |
| DATETIME | TIMESTAMP WITHOUT TIME ZONE |
| TIMESTAMP | TIMESTAMP WITHOUT TIME ZONE |
| TIME | TIME WITHOUT TIME ZONE |
| YEAR | INTEGER |
| CHAR | CHARACTER |
| VARCHAR | CHARACTER VARYING |
| BINARY | BYTEA |
| VARBINARY | BYTEA |
| TINYBLOB | BYTEA |
| BLOB | BYTEA |
| MEDIUMBLOB | BYTEA |
| LONGBLOB | BYTEA |
| TINYTEXT | BYTEA |
| TEXT | TEXT |
| MEDIUMTEXT | TEXT |
| LONGTEXT | TEXT |
| ENUM | TEXT |
| SET | TEXT |
| JSON | JSON |
| GEOMETRY? | TEXT |
| POINT? | POINT? |
| LINESTRING? | TEXT |
| POLYGON? | POLYGON? |
| MULTIPOINT? | TEXT |
| GEOMETRY_COLLECTION? | TEXT |
| GEOM_COLLECTION? | TEXT |
| MULTILINESTRING? | TEXT |
準備作業
- 安裝好 CloudCanal 社區版 2.2.5.10 及以上版本
- 準備好源端和目標端資料庫以及對應的測驗資料
操作示例
添加資料源
- 登錄 CloudCanal 平臺
- 資料源管理 -> 新增資料源 -> 自建資料庫

- 添加 Greenplum 或者 PostgreSQL后可以在資料源串列看到新增的資料源,

創建同步任務
- 任務管理 -> 創建任務
- 源端選擇 MySQL 資料源,對端選擇 Greenplum / PostgreSQL
- 分別點擊 測驗連接,選擇源端和對端需要訂閱的庫,選擇 下一步

- 選擇 增量同步 -> 選擇 全量初始化
- 根據自身機器配置選擇 規格
- 選擇 下一步

- 選擇源端需要同步的表,如果目標表顯示橙色表示對端不存在該表,任務創建之后,會自動生成該表
- 點擊下一步

- 可以在左側,添加 資料過濾條件
- 選擇 下一步

- 選擇 創建任務

任務執行
任務創建并且啟動后,會自動進行如下的三個階段:
- 結構遷移:任務創建之后,如果對端沒有表結構,那么 CloudCanal 會去自動在對端創建表結構
- 資料初始化:將源端存量資料整體遷移到對端
- 資料同步:全量遷移期間以及全量完成以后的源端增量資料變更會實時同步到對端


總結
本文簡單介紹了如何使用 CloudCanal 進行 MySQL -> Greenplum 資料遷移同步,各位讀者朋友,如果你覺得還不錯,請點贊、評論加轉發吧,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/539079.html
標籤:其它
