TDSQL-H LibraDB 异构转换规则

TDSQL-H LibraDB 和 MySQL 是两种完全不同的数据库,因此在数据定义,SQL 语法等使用方式都有不同。CDC 提供了自动化的转换方案,结合少量的用户参与配置,即可满足多数场景需求。

相关产品
TDSQL-H LibraDB 产品页,含版本规格、价格与购买入口。

一、数据表转换规则

·数据表统一自动转换到 ReplicatedReplacingMergeTree。

·为用户创建对应的本地表和分布式表。本地表为表名添加 _local 后缀。
示例:

— 使用 CDC 同步 MySQL 库表 sbtest.sbtest1 到 LibraSQL 分析引擎,自定义分区键为 t– MySQL 表定义CREATE TABLE `sbtest1` (`id` int(11) NOT NULL AUTO_INCREMENT,`k` int(11) NOT NULL DEFAULT '0',`c` char(120) NOT NULL DEFAULT '',`pad` char(60) NOT NULL DEFAULT '',`t` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`id`),KEY `k_1` (`k`)) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8– 转换到 LibraSQL 分析引擎的本地表CREATE TABLE sbtest.sbtest1_local (`id` Int32, `k` Int32, `c` String, `pad` String, `t` DateTime, `_sign` Int8, `_version` UInt64) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/sbtest/tables/sbtest1_local/{shard}', '{replica}', _version) PARTITION BY toYYYYMM(t) ORDER BY id SETTINGS index_granularity = 8192– 转换到 LibraSQL 分析引擎的分布式表CREATE TABLE sbtest.sbtest1 (`id` Int32, `k` Int32, `c` String, `pad` String, `t` DateTime, `_sign` Int8, `_version` UInt64) ENGINE = Distributed('default_cluster', 'sbtest', 'sbtest1_local', cityHash64(id))

二、Key 的转换规则

·排序键:优先选择 MySQL 表主键,其次是“不可为 NULL 的唯一键”。若“不可为 NULL 的唯一键”有多列,则选择其中第一列。

·主键:不做设定,默认为排序键。

·分区键:默认不设置,用户可自定义,详见 设置分区键。

·分片键:使用表达式 cityHash64(主键)。

三、数据类型的转换规则

默认的数据类型转换规则表。

MySQL 数据类型 LibraSQL 分析引擎数据类型
BIGINT Int64
BINARY String
BIT Int64
CHAR String
DATE String
DATETIME String
DECIMAL String:MySQL DECIMAL 映射为 LibraSQL DECIMAL 功能上线前启动的 CDC 任务。DECIMAL:版本为 LibraSQL 10.3.213 新创建的 CDC 任务及后续 LibraSQL 版本。DECIMAL 仅支持不超过38位精度。
DOUBLE Float64
ENUM String
FLOAT Float32
GEOMETRY String
GEOMETRYCOLLECTION String
INT Int32
INTEGER Int32
JSON String
LINESTRING String
MEDIUMINT Int32
MULTILINESTRING String
MULTIPOINT String
MULTIPOLYGON String
POINT String
POLYGON String
SET String
SMALLINT Int16
TIME String
TIMESTAMP String
TINYBLOB/BLOB/MEDIUMBLOB/LONGBLOB String
TINYINT Int8
TINYTEXT/TEXT/MEDIUMTEXT/LONGTEXT String
VARBINARY String
VARCHAR String
YEAR Int16

四、自定义数据类型转换

MySQL 和 LibraSQL 分析引擎的某些类型转换方式,会影响到用户的使用,因此提供了用户设定能力。在创建 CDC 的高级设置中,有字段类型映射功能。

对于时间类型,CDC 服务默认转换为 String,确保信息不丢失。但这样会丢失 LibraSQL 分析引擎时间函数等能力,因此用户可在此处自行选择转换方式。

注意:LibraSQL 分析引擎的时间类型基于 UNIX 时间戳,因此无法表达1970-01-01 00:00:00前的时间信息。当 MySQL 的数据有此之前的时间时,会自动转换为1970-01-01 08:00:00(自动时区转换到东8区),导致出现信息偏差。

赞 (0)
上一篇 4天前
下一篇 4天前