TDSQL MySQL 数据源

最近更新时间:2024-09-04 20:44:32

我的收藏
数据集成提供了 TDSQL MySQL 的读取和写入能力,本文为您介绍使用 TDSQL-C MySQL 进行实时数据同步的前置环境配置以及当前能力支持情况。

支持版本

目前数据集成已支持 TDSQL-C MySQL 单表及整库级实时读取和单表写入,使用实时同步能力需遵循以下版本限制:
引擎类型
版本
MySQL
仅支持原有 InnoDB 类型,不支持 TDStore 类型

使用限制

不支持动态新增分片,需要先暂停任务,再新增分片。
需要开启 Binlog 日志,仅支持同步 TDSQL MySQL 服务器 Binlog 配置格式为 ROW。
无主键的表由于无法保证 exactly once 可能会有数据重复,因此实时同步任务最好保证有主键。
不支持 XA ROLLBACK,实时同步的任务不会针对 XA PREPARE 的数据进行回滚的操作,若要处理 XA ROLLBACK 场景,需要手动将 XA ROLLBACK 的表从实时同步任务中移除,再添加表后重新进行同步。
设置 TDSQL MySQL 会话超时:
当为大型数据库制作初始一致快照时,您建立的连接可能会在读取表时超时。您可以通过在 TDSQL MySQL 配置文件中配置 interactive_timeout 和 wait_timeout 来防止这种行为。
interactive_timeout:服务器在关闭交互式连接之前等待其活动的秒数。请参见 文档
wait_timeout:服务器在关闭非交互式连接之前等待其活动的秒数。请参见 文档

整库来源配置

数据来源设置




参数
说明
数据源
选择需要同步的 TDSQL MySQL 数据源。
来源表
所有库表:监控数据源下所有库。任务运行期间新增库、表默认将同步至目标端。
指定表:此选项下需指定到具体表名称,设置后任务仅同步指定表;若需要新增同步表需停止并重启任务。



指定库:此选项下需指定具体库名、以表名正则表达式。设置后,任务运行期间符合表名表达式的新增表默认将同步至目标端。



读取模式
全量 + 增量:数据同步分为全量和增量同步阶段,全量阶段完成后任务进入增量阶段。全量阶段将同步库内历史数据,增量阶段从任务启动后 binlog cdc 的位点开始同步。
仅增量:仅从任务启动后的 binlog cdc 位点开始同步数据。
一致性语义
仅代表读取端的一致性语义。支持 At-least-once 和 Exactly-once。
At-least-once:数据可能存在重复读取,依赖目标端支持去重来保证数据的一致性。适用于全量阶段数据量大且使用非数值型主键、对同步性能要求高的场景。
Exactly-once:数据严格只读取一次,性能上有一定损失,不支持无主键且无唯一索引列的表。适用于源表有数值型主键或唯一索引列的通用场景。
当前版本两种模式状态不兼容,任务提交后如果修改模式,不支持带状态重启。
过滤操作
支持插入、更新和删除三种操作,设置后将不同步指定操作类型的数据。
时区
设置日志时间所属时区,默认上海。
高级设置(可选)
可根据业务需求配置参数。

支持的目标数据源

当前支持将 TDSQL MySQL 数据实时整库同步到以下类型的目标端:

实时单表读取节点配置




参数
描述
数据来源
选择需要同步的表所在数据源
选择需要同步的表所在数据库
支持选择、或者手动输入需写入的表名称。
分片列
分片列用于将表分为多个分片进行同步。
有主键的表建议优先选择表主键作为分片列。
无主键的表建议选择有索引的列作为分片列,且保证分片列不存在数据的更新操作,否则只能保证 At-Least-Once 语义。
读取模式
全量 + 增量:数据同步分为全量和增量同步阶段,全量阶段完成后任务进入增量阶段。全量阶段将同步库内历史数据,增量阶段从任务启动后 binlog cdc 的位点开始同步。
仅增量:仅从任务启动后的 binlog cdc 位点开始同步数据。
一致性语义
仅代表读取端的一致性语义。支持 At-least-once 和 Exactly-once。
At-least-once:数据可能存在重复读取,依赖目标端支持去重来保证数据的一致性。适用于全量阶段数据量大且使用非数值型主键、对同步性能要求高的场景。
Exactly-once:数据严格只读取一次,性能上有一定损失,不支持无主键且无唯一索引列的表。适用于源表有数值型主键或唯一索引列的通用场景。
当前版本两种模式状态不兼容,任务提交后如果修改模式,不支持带状态重启。
过滤操作
设置后将不同步指定操作类型的数据,支持插入、更新和删除。
时区
设置日志时间所属时区,默认上海。
高级设(选填)
可根据业务需求配置参数。

实时单表写入节点配置




参数
说明
数据去向
需要写入的 TDSQL MySQL 数据源。
支持选择、或者手动输入需写入的库名称
默认将数据源绑定的数据库作为默认库,其他数据库需手动输入库名称。
当数据源网络不联通导致无法直接拉取库信息时,可手动输入数据库名称。在数据集成网络连通的情况下,仍可进行数据同步。
支持选择、或者手动输入需写入的表名称。
当数据源网络不联通导致无法直接拉取表信息时,可手动输入表名称。在数据集成网络连通的情况下,仍可进行数据同步。
高级设置(选填)
可根据业务需求配置参数。

数据类型转换支持

读取

字段类型
是否支持
内部映射字段
备注
TINYINT
TINYINT
TINYINT(1) 默认映射到 BOOLEAN
单表任务可通过高级设置将TINYINT(1)映射为 tinyint
SMALLINT
SMALLINT
-
TINYINT_UNSIGNED
SMALLINT
-
TINYINT_UNSIGNED_ZEROFILL
SMALLINT
-
INT
INT
-
INTEGER
INT
-
YEAR
INT
-
MEDIUMINT
INT
-
SMALLINT_UNSIGNED
INT
-
SMALLINT_UNSIGNED_ZEROFILL
INT
-
BIGINT
LONG
-
INT_UNSIGNED
LONG
-
MEDIUMINT_UNSIGNED
LONG
-
MEDIUMINT_UNSIGNED_ZEROFILL
LONG
-
INT_UNSIGNED_ZEROFILL
LONG
-
BIGINT_UNSIGNED
DECIMAL
DECIMAL(20,0)
BIGINT_UNSIGNED_ZEROFILL
DECIMAL
DECIMAL(20,0)
SERIAL
DECIMAL
DECIMAL(20,0)
FLOAT
FLOAT
-
FLOAT_UNSIGNED
FLOAT
-
FLOAT_UNSIGNED_ZEROFILL
FLOAT
-
DOUBLE
DOUBLE
-
DOUBLE_UNSIGNED
DOUBLE
-
DOUBLE_UNSIGNED_ZEROFILL
DOUBLE
-
DOUBLE_PRECISION
DOUBLE
-
DOUBLE_PRECISION_UNSIGNED
DOUBLE
-
ZEROFILL
DOUBLE
-
REAL
DOUBLE
-
REAL_UNSIGNED
DOUBLE
-
REAL_UNSIGNED_ZEROFILL
DOUBLE
-
NUMERIC
DECIMAL
采用用户数据库实际的精度 p<=38 映射到 DECIMAL 38 < p <= 65 时映射到 String
NUMERIC_UNSIGNED
DECIMAL
采用用户数据库实际的精度 p<=38 映射到 DECIMAL 38 < p <= 65 时映射到 String
NUMERIC_UNSIGNED_ZEROFILL
DECIMAL
采用用户数据库实际的精度 p<=38 映射到 DECIMAL 38 < p <= 65 时映射到 String
DECIMAL
DECIMAL
采用用户数据库实际的精度 p<=38 映射到 DECIMAL 38 < p <= 65 时映射到 String
DECIMAL_UNSIGNED
DECIMAL
采用用户数据库实际的精度 p<=38 映射到 DECIMAL 38 < p <= 65 时映射到 String
DECIMAL_UNSIGNED_ZEROFILL
DECIMAL
采用用户数据库实际的精度 p<=38 映射到 DECIMAL 38 < p <= 65 时映射到 String
FIXED
DECIMAL
采用用户数据库实际的精度 p<=38 映射到 DECIMAL 38 < p <= 65 时映射到 String
FIXED_UNSIGNED
DECIMAL
采用用户数据库实际的精度 p<=38 映射到 DECIMAL 38 < p <= 65 时映射到 String
FIXED_UNSIGNED_ZEROFILL
DECIMAL
采用用户数据库实际的精度 p<=38 映射到 DECIMAL 38 < p <= 65 时映射到 String
BOOLEAN
BOOLEAN
-
DATE
DATE
-
TIME
TIME
-
DATETIME
TIMESTAMP
-
TIMESTAMP
TIMESTAMP
-
CHAR
STRING
-
JSON
STRING
-
BIT
STRING
BIT(1) 映射到 BOOLEAN
VARCHAR
STRING
-
TEXT
STRING
-
BLOB
STRING
-
TINYBLOB
STRING
-
TINYTEXT
STRING
-
MEDIUMBLOB
STRING
-
MEDIUMTEXT
STRING
-
LONGBLOB
STRING
-
LONGTEXT
STRING
-
VARBINARY
STRING
-
GEOMETRY
STRING
-
POINT
STRING
-
LINESTRING
STRING
-
POLYGON
STRING
-
MULTIPOINT
STRING
-
MULTILINESTRING
STRING
-
MULTIPOLYGON
STRING
-
GEOMETRYCOLLECTION
-
-
ENUM
STRING
-
BINARY
BINARY
BINARY(1)
SET
-
-

写入

内部类型
MySQL 类型
TINYINT
TINYINT
SMALLINT
SMALLINT,TINYINT UNSIGNED
INT
INT,MEDIUMINT,SMALLINT UNSIGNED
BIGINT
BIGINT,INT UNSIGNED
DECIMAL(20, 0)
BIGINT UNSIGNED
FLOAT
FLOAT
DOUBLE
DOUBLE,DOUBLE PRECISION
DECIMAL(p, s)
NUMERIC(p, s),DECIMAL(p, s)
BOOLEAN
BOOLEAN,TINYINT(1)
DATE
DATE
TIME [(p)][WITHOUT TIMEZONE]
TIME [(p)]
TIMESTAMP [(p)][WITHOUT TIMEZONE]
DATETIME [(p)]
STRING
CHAR(n),VARCHAR(n),TEXT
BYTES
BINARY,VARBINARY,BLOB
ARRAY
-