使用说明

最近更新时间:2024-10-12 16:29:11

我的收藏
类别
说明
同步对象
1. 只支持同步基础表、视图、存储过程和函数。
2. 相互关联的数据对象需要同时同步,否则会导致同步失败。
源库影响
1. 数据同步时,DTS 会使用执行同步任务的账号在源库中写入系统库`__tencentdb__`,用于记录事务标记ID等元信息,需要确保源库对`__tencentdb__`的读写权限。
为保证后续数据对比问题可定位,同步任务结束后不会删除源库中的`__tencentdb__`
`__tencentdb__`系统库占用空间非常小,约为源库存储空间的千分之一到万分之一(例如源库为50GB,则`__tencentdb__`系统库约为5MB - 50MB),并且采用单线程,等待连接机制,所以对源库的性能几乎无影响,也不会抢占资源。
2. 默认采用无锁同步方式,全量数据导出阶段不会对源库加全局锁(FTWRL),仅对无主键的表加表锁。
目标端 Kafka 要求
1. 目标端 Kafka 的版本,当前仅支持在腾讯云上可购买的 专业版和标准版,并且为1.1.1版本及以后;历史已经下线的物理机标准版不支持作为目标端。
2. 需要在目标 kafka 中修改消息保留时间和消息大小上限。 消息保存时间建议设置为3天,超过保存时间的数据会被清除,请用户在设置的时间内及时消费;消息大小上限,即 Kafka 可以接收的单个消息内存的大小,设置时需要大于源库表中单行数据的最大值,以确保源库的数据都可以正常投递到 Kafka 中。
3. 建议目标 Topic 为空,同时在同步任务过程中,不要在目标端选择同步的 Topic 中进行数据写入,否则可能会导致消息错乱,任务报错。
数据同步说明
1. 只支持同步 InnoDB、MyISAM、TokuDB 三种数据库引擎,如果存在这三种以外的数据引擎表则默认跳过不进行同步。
2. 同一个任务可以关联多个 Topic,但同一个 Topic 不能同时被多个同步任务使用,否则会导致数据错乱,消费到的数据是多个不同任务的数据,也可能导致在任务重试等场景中数据处理异常,任务报错。
3. 在全量同步阶段,每同步10万条数据,会在目标端 Kafka 插入一条 checkpoint 消息,标识当前的数据同步位点。
4. DTS 同步到目标端 Kafka 的单条消息存在性能上限,建议用户源数据库中的单行数据不要超过8MB,否则在同步过程中可能会报错。
5. 如果用户在同步过程中确定会对某张表使用 rename 操作,投递到目标 kafka 中,分区规则会按照新的表名匹配 topic 和 partition。
6. 增量同步过程中,若源库产生了类型为 STATEMENT 格式的 Binlog 语句,则会导致同步失败。
7. 不支持 ALTER VIEW 语句,遇到该语句任务跳过不同步。
8. 不支持选择源端整个实例进行同步,如果在后续同步任务中,源端有新建库的操作(CREATE DATABASE),建议在同步任务启动前,自行在目标端创建好该库对象,或者在同步任务启动后,通过修改同步配置操作来追加新增的库对象。
9. 如果在同步任务过程中,源端有 CREATE TABLE,RENAME TABLE 操作,请在配置阶段选择同步对象时,勾选该表所在的整库,否则新建的表,或者 RENAME 后的表不会同步到目标端。
数据消费说明
在同步任务前,源库中已经存在的全量数据,因为没有数据写入的准确时间,在消费端 Demo 中 happenAt 字段会显示为1970-01-01 08:00:00,该时间字段无需关注。消费增量数据时,时间字段可以正确显示。
重启影响
同步任务过程中,如果发生任务重启(如修改同步对象、任务错误时手动操作重试、变配、暂停任务再恢复,隔离后再解隔离等),可能会导致同步到目标端 Kafka 的数据出现重复。
DTS 是按最小数据单元进行同步的(全量阶段单个表对象的一块数据即为最小数据单元,增量阶段每标记一个位点就是一个数据单元),如果重启时,刚好一个数据单元同步已完成,则不会导致数据重复;如果重启时,一个数据单元还正在同步中,那么再次启动后需要重新同步这个数据单元,这样就会导致数据重复。
用户如果对重复数据比较关注,请在消费数据时设置去重逻辑。
操作限制
同步过程中请勿进行如下操作,否则会导致同步任务失败。
1. 在全量导出阶段,请勿在源库上执行库或表结构变更的 DDL 操作。
2. 请勿修改、删除源数据库和目标端中的用户信息(包括用户名、密码和权限)和端口号。
3. 请勿在源库上执行清除 Binlog 的操作。
数据类型
1. DTS 在全量数据同步阶段,将源库数据导出并导入到目标端 Kafka,均使用 utf8mb4 字符集,以避免因字符集不识别导致乱码问题。
2. 不支持 Geometry 相关的数据类型,遇到该类型数据任务报错。
事务
不支持同时包含 DML 和 DDL 语句在一个事务的场景,遇到该情况任务会报错。
HA 切换
源库如果是非 GTID 数据库,DTS 不支持源端 HA 切换,一旦源端发生切换可能会导致 DTS 增量同步中断。
指定启动时间点
1. 增量同步任务,从设置的时间点开始同步数据,设置的时间点范围为:之前的14天-当前时间。
2. 如果全量同步和增量同步分开执行,这里请注意,进行全量同步时,DTS 已经同步的全量数据时间点1与设置的时间点2之间,不能存在 DDL 变更数据,否则任务会报错。
3. 从设置的指定时间点1,到增量任务启动点2之间(任务步骤从“寻找指定位点”转化为“同步增量”才算启动),源库操作注意事项如下。
建议源库不要进行主从切换、增加分片、重做备机操作,否则可能会影响 DTS 获取源库的 GTID 位点。
源端可以操作与同步对象无关的 DDL,但需要保证上一条 DDL 同步到目标端后再执行新的 DDL。密集地执行 DDL 可能会导致任务报错。
源端操作与同步对象有关的 DDL时,同步任务会报错。
4. 因为指定位点同步是根据 Binlog 中 context 的时间(SET TIMESTAMP=XXXX)来判断其 GTID,为保证同步数据的正确性,建议用户不要修改该 context。
5. 请确认数据库设置的时区与当前控制台时区(即浏览器时区)一致,或者换算为数据库设置时区所对应的时间,否则可能会导致指定位点同步结果不合预期。
6. 如果设置的时间点在 XA 事务持续时间的范围内,则该XA事务不会被同步。对于这种情况,建议时间点可以往前设置一些(在 XA START 的时间之前)。