如今仅展示了差异项。
1. MySQL/MariaDB/Percona 到 TDSQL MySQL 的同步链路中,分区表的映射说明如下:
1.1 如果用户没有表类型映射,默认选择主键作为分片键,分片方法为 hash;对于联合主键选择第一个主键作为分片键。
1.1.1 源端创建的分区表需要符合目标端 TDSQL MySQL 分区表建表规范(如 shardkey 字段的类型必须是 int/bigint/smallint/char/varchar,shardkey 字段类型为 char/varchar 时需定义字段长度,shardkey 不能为中文,等等),并且全量和增量阶段的分区规则都需要满足目标端要求,否则会导致同步报错。
1.1.2 如果源库的主键类型经 DTS 映射转化后,不符合目标库分片键类型的要求(分片键需要为 int、bigint、smallint、char、varchar),则会创建为单表形式。
1.2 对于分区表的映射,当前仅支持一级分区 hash、range、list,并使用主键作为分区键。如果没有指定分区类型,默认使用 hash 做一级分区映射。
1.2.1 映射为一级Range/List分区时,目标库支持的分区键数据类型为TINYINT, SMALLINT, MEDIUMINT, INT (INTEGER), BIGINT,CHAR, VARCHAR。设置Range/List分区时,需要保证分区策略可以覆盖源端全量+增量的所有数据,否则会导致数据无法按照分区规则写入,从而导致任务报错。
1.2.2 映射为一级Hash分区时,分区键必须是主键以及唯一索引的一部分,目标库支持的分区键数据类型为SMALLINT,INT (INTEGER),BIGINT,CHAR,VARCHAR。
1.3 源端 MySQL/MariaDB/Percona 如果为分表,同步到目标端 TDSQL MySQL 后,只支持创建为单表。
2. 在 MySQL/MariaDB/Percona 同步至 TDSQL MySQL 的场景中,因为目标端 TDSQL MySQL 的分表和广播表对自增字段的限制,源端相应的限制如下:
2.1 源端不支持使用 ALTER TABLE MODIFY AUTO_INCREMENT 语法将普通字段修改为 AUTO_INCREMENT,如果有类似修改自增字段 AUTO_INCREMENT 的操作,同步任务会报错。
2.2 源端的表如果有自增列,则自增列必须是主键列,否则同步任务会报错。