操作场景
目标端为 TDSQL MySQL 的同步链路配置中,可以设置源端的表同步到目标端类型,支持单表、分表、广播表。
分表:即水平拆分表,该表从业务视角是一张完整的逻辑表,但后端根据分片键(shardkey)的 HASH 值将数据分布到不同的节点(set)中。
单表:又名 Noshard 表,无需拆分,且没有做任何特殊处理的表,目前分布式实例将该表默认存放在第一个物理节点组(set)中。
广播表:又名小表广播技术,即设置为广播表后,该表的所有操作都将广播到所有节点(set)中,每个 set 都有该表的全量数据,常用于业务系统的配置表等。
当前 MySQL/MariaDB/Percona 到 TDSQL MySQL 的同步链路中(集中式->分布式),分表的映射规则如下。
默认选择主键作为分片键,分片方法为 hash;对于联合主键选择第一个主键作为分片键。
如果源库的主键类型经 DTS 映射转化后,不符合目标库分片键类型的要求(分片键需要为 int、bigint、smallint、char、varchar),则会创建为单表形式。
对于分表的映射,当前仅支持一级分区 hash、range、list,并使用主键作为分区键。如果没有指定分区类型,默认使用 hash 做一级分区映射。
注意事项
1. 用户选择分表,并设置 Range 或者 List 分区时,需要保证分区策略可以覆盖源端全量+增量的所有数据,否则会导致数据无法按照分区规则写入,从而导致任务报错。
2. 在 MySQL/MariaDB/Percona 同步至 TDSQL MySQL 的场景中,因为目标端 TDSQL MySQL 的分表和广播表对自增字段的限制,源端相应的限制如下:
源端不支持使用 ALTER TABLE MODIFY AUTO_INCREMENT 语法将普通字段修改为 AUTO_INCREMENT,如果有类似修改自增字段 AUTO_INCREMENT 的操作,同步任务会报错。
源端的表如果有自增列,则自增列必须是主键列,否则同步任务会报错。
适用场景
MySQL/MariaDB/Percona -> TDSQL MySQL
操作步骤
1. 登录 DTS 控制台,在左侧导航选择数据同步页,创建同步任务。
2. 在设置同步选项和同步对象步骤中,在选择同步对象右侧“已选对象”中,将鼠标悬浮在需要设置分区规则的表上,然后单击编辑按钮。
3. 选择不同的分区策略,并设置对应的分区规则,然后单击确定。
4. 进行后续数据同步操作步骤。