本文主要介绍如何使用 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提供的自定义数据处理能力,这对于实时宽表构建、新增动态列、基于微服务、缓存的数据清洗等数据处理场景都非常有帮助。关于更多自定义数据的使用方式可以参考:数据处理插件使用方式。
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 进行 MySQL -> Greenplum 数据迁移同步。各位读者朋友,如果你觉得还不错,请点赞、评论加转发吧。