| 类别 | 说明 |
| 同步对象 | 1. 只支持同步基础表、视图,不支持同步函数、触发器、存储过程等对象。2. 相互关联的数据对象需要同时同步,否则会导致同步失败。3. 源端 TDSQL MySQL 中对表的数量有限制,整个实例最多为5000个,超出后 DTS 任务会报错;同时,表的数量太多会导致源端的访问耗时变大,引起性能抖动和下降。4. 增量同步阶段,源库的表名如含有“TDSQLagent”、 “tdsql_sub”字符可能会被过滤或者引起同步异常,因为这些表名与 TDSQL 系统的临时表名相同,TDSQLagent 为扩容时的临时表,tdsql_sub 表为 hash-list 和 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. 对于存在浮点类型的表,可能因为全量和增量同步的精度存在差异,导致同步结果的精度不一致。2. 源端 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 LIST1.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/LIST1.3 新二级分区一级 Hash 分区 + 二级 Range/List分区:TDSQL_DISTRIBUTED BY HASH + TDSQL_PARTITION BY RANGE/LIST2. 增量同步阶段,不支持进行密集的 create 二级分区表,再 drop 二级分区表,再 create 二级分区表的操作,否则可能会由于表类型冲突导致任务异常;先 drop 不存在的二级分区表,再 create 二级分区表,可能会导致死锁,任务无报错,需要手动解锁。3. TDSQL MySQL 同步到 MySQL/MariaDB/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 的时间之前)。 |
数据传输服务 使用说明(TDSQL MySQL 同步至 TDSQL MySQL)
•
腾讯云产品
这篇说明腾讯云DTS将TDSQL MySQL作为同步源时的使用限制与注意事项,涵盖同步对象、源库影响、同步功能、操作限制、数据类型、事务、HA切换与扩容、分区表同步及指定启动位点等约束,核心结论是需按规范配置对象与操作,否则任务易报错或中断。 同步对象:仅支持基础表与视图,关联对象需同时同步,表名避免TDSQLagent、tdsql_sub等系统临时表名。 源库影响:全量同步占用源库资源,建议低峰期执行;DTS会写入。
赞 (0)
数据传输服务 同步操作指导
下一篇
4天前