簡述 本文主要介紹如何使用 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. ...
簡述
本文主要介紹如何使用 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 數據遷移同步。各位讀者朋友,如果你覺得還不錯,請點贊、評論加轉發吧。