使用说明

最近更新时间:2024-12-31 14:59:22

我的收藏
类别
说明
同步对象
1. 只支持同步基础表、视图,不支持同步函数、触发器、存储过程等对象。
2. 相互关联的数据对象需要同时同步,否则会导致同步失败。
3. 源端 TDSQL MySQL 中对表的数量有限制,整个实例最多为5000个,超出后 DTS 任务会报错;同时,表的数量太多会导致源端的访问耗时变大,引起性能抖动和下降。
4. 增量同步阶段,源库的表名如含有“TDSQLagent”、 “tdsql_sub”字符可能会被过滤或者引起同步异常,因为这些表名与 TDSQL 系统的临时表名相同,TDSQLagent 为扩容时的临时表,tdsql_sub 表为 hash-lish 和 hash-range 的子表,因此建议源端待同步的表名不要设置为这些类型。
源库影响
1. DTS 在执行全量数据同步时,会占用一定源库资源,可能会导致源库负载上升,增加数据库自身压力。如果您数据库配置过低,建议您在业务低峰期进行。
2. 数据同步时,DTS 会使用执行同步任务的账号在源库中写入系统库`__tencentdb__`,用于记录事务标记 ID 等元信息,需要确保源库对`__tencentdb__`的读写权限。
为保证后续数据对比问题可定位,同步任务结束后不会删除源库中的`__tencentdb__`
`__tencentdb__`系统库占用空间非常小,约为源库存储空间的千分之一到万分之一(例如源库为50GB,则`__tencentdb__`系统库约为5MB - 50MB),并且采用单线程,等待连接机制,所以对源库的性能几乎无影响,也不会抢占资源。
3. 默认采用无锁同步方式,全量数据导出阶段不会对源库加全局锁(FTWRL),仅对无主键的表加表锁。
同步功能说明
1. 目前主键冲突处理策略只支持冲突覆盖,对于全量、增量阶段的主键数据冲突,都会进行冲突覆盖。
2. 关于 DDL 的操作约束如下:
在全量导出阶段,请勿在源库上执行库或表结构变更的 DDL 操作。
同步增量阶段,TDSQL MySQL 分布式为源的链路中,源端执行 DDL 时,建议不要在短时间内大并发的执行,有可能会造成链路延迟或者中断。
3. 只支持同步 InnoDB 数据库引擎,如果存在其他数据引擎表则任务校验时会报错。
4. 增量同步期间不支持修改主键,包括主键列、分区表分布键、对主键列的 COMMENT 注释,增删改列字段和长度。
5. 增量同步过程中,若源库产生了类型为 STATEMENT 格式的 Binlog 语句,则会导致同步失败。
6. 不支持选择源端整个实例进行同步,如果在后续同步任务中,源端有新建库的操作(CREATE DATABASE),建议在同步任务启动前,自行在目标端创建好该库对象。
7. 如果在同步任务过程中,源端有 CREATE TABLE,RENAME TABLE 操作,请在配置阶段选择同步对象时,勾选该表所在的整库,否则新建的表,或者 RENAME 后的表不会同步到目标端。
操作限制
同步过程中请勿进行如下操作,否则会导致同步任务失败。
1. 同步任务过程中,请勿修改、删除源数据库和目标数据库中用户信息(包括用户名、密码和权限)和端口号。
2. 请勿在源库上执行清除 Binlog 的操作。
数据类型
1. 不支持 Geometry 相关的数据类型,遇到该类型数据任务报错。
2. 对于存在浮点类型的表,可能因为全量和增量同步的精度存在差异,导致同步结果的精度不一致。
3. 源端 TDSQL MySQL 为 MariaDB 10.1.x 内核时,使用 timestamp 类型不支持指定精度(例如 timestamp(3)),否则 DTS 任务会报错,需要去掉精度,然后重建任务。
事务
1. 不支持同时包含 DML 和 DDL 语句在一个事务的场景,遇到该情况任务会报错。
2. 源库为 TDSQL MySQL(内核 MariaDB 5.6)时,不支持 XA 事务,遇到 XA 事务任务会报错。
HA 切换和扩容
1. 源库如果是非 GTID 数据库,DTS 不支持源端 HA 切换,一旦源端 TDSQL MySQL 发生切换可能会导致 DTS 增量同步中断。
2. 源库如果是自建数据库,采用 SET 连接 TDSQL MySQL 的场景,当同步任务启动后,源端进行了增加或者删除 SET 节点,DTS 同步任务会报错,需要用户修改 DTS 中源数据库的 SET 配置信息(与源端实际的 SET 保持一致),然后重启任务,这样才能同步到新增或者删除 SET 的信息。
分区表同步
1. 全量阶段支持同步一级/二级分区表,但分区语法需要符合 TDSQL MySQL 的规范,一级 Hash 分区表仅支持通过 shardkey 方式创建。
TDSQL MySQL 创建分区表的关键语法如下,详细语法请参考 TDSQL MySQL 官网文档
1.1 一级分区
一级 Hash 分区:shardkey
一级 Range 分区:TDSQL_DISTRIBUTED BY RANGE
一级 List 分区:TDSQL_DISTRIBUTED BY LIST
1.2 二级分区
一级 Hash 分区 + 二级 Range/List 分区:shardkey + PARTITION BY RANGE/LIST
一级 Range 分区 + 二级 Range/List 分区:TDSQL_DISTRIBUTED BY RANGE + PARTITION BY RANGE/LIST
一级 List 分区 + 二级 Range/List 分区:TDSQL_DISTRIBUTED BY LIST + PARTITION BY RANGE/LIST
1.3 新二级分区
一级 Hash 分区 + 二级 Range/List分区:TDSQL_DISTRIBUTED BY HASH + TDSQL_PARTITION BY RANGE/LIST
2. 增量同步阶段,不支持进行密集的 create 二级分区表,再 drop 二级分区表,再 create 二级分区表的操作,否则可能会由于表类型冲突导致任务异常;先 drop 不存在的二级分区表,再 create 二级分区表,可能会导致死锁,任务无报错,需要手动解锁。
3. TDSQL MySQL 同步到 MySQL/MaraDB/Percona 链路,如果源端待同步的库表中包含二级分区表,则同步到目标端后为单表。
指定启动位点
初始化类型都不勾选时,表示仅增量同步,可设置增量同步的起始位点。当前使用该功能需要 提交工单 申请。
1. 增量同步任务,从设置的时间点开始同步数据,设置的时间点范围为:之前的14天-当前时间。
2. 如果全量同步和增量同步分开两个任务执行,这里请注意,进行增量同步时,DTS 已经同步的全量数据时间点1与设置的时间点2之间,不能存在 DDL(CREATE TABLE、ALTER TABLE、DROP TABLE、RENAME TABLE、CREATE INDEX、DROP INDEX)变更数据,否则任务会报错。
3. 从设置的指定时间点1,到增量任务启动点2之间(任务步骤从“寻找指定位点”转化为“同步增量”才算启动),源库操作注意事项如下。
建议源库不要进行主从切换、增加分片、重做备机操作,否则可能会影响 DTS 获取源库的 GTID 位点。
源端可以操作与同步对象无关的 DDL,但需要保证上一条 DDL 同步到目标端后再执行新的 DDL。密集地执行 DDL 可能会导致任务报错。
源端不能操作与同步对象有关的 DDL(CREATE TABLE、ALTER TABLE、DROP TABLE、RENAME TABLE、CREATE INDEX、DROP INDEX),否则同步任务会报错。
4. 因为指定时间点同步是根据 Binlog 中 context 的时间(SET TIMESTAMP=XXXX)来判断其 GTID,为保证同步数据的正确性,建议用户不要修改该 context。
5. 请确认数据库设置的时区与当前控制台时区(即浏览器时区)一致,或者换算为数据库设置时区所对应的时间,否则可能会导致指定位点同步结果不合预期。
6. 请确认 TDSQL MySQL 各集群节点的时间保持一致,否则可能会导致指定位点同步结果不合预期。
7. 如果设置的时间点在 XA 事务持续时间的范围内,则该 XA 事务不会被同步。对于这种情况,建议时间点可以往前设置一些(在 XA START 的时间之前)。
8. 使用指定时间点功能时,源端 gtid_mode 必须为 ON。