tencent cloud

数据传输服务

动态与公告
产品动态
公告
产品简介
产品概述
数据迁移功能描述
数据同步功能描述
数据订阅(Kafka 版)功能描述
产品优势
支持的地域
规格说明
购买指南
计费概述
变更配置说明
欠费说明
退费说明
快速入门
数据迁移操作指导
数据同步操作指导
数据订阅操作指导(Kafka 版)
准备工作
业务评估
网络准备
添加 DTS IP 地址至对接数据库白名单
DTS 服务权限准备
数据库及权限准备
配置自建 MySQL 系的 Binlog
数据迁移
数据迁移支持的数据库
云数据库跨账号实例间迁移
迁移至 MySQL 系列
迁移至 PostgreSQL
迁移至 MongoDB
迁移至 SQL Server
迁移至腾讯云分布式缓存数据库
任务管理
数据同步
数据同步支持的数据库
云数据库跨账号实例间同步
同步至 MySQL 系列
同步至 PostgreSQL
同步至 MongoDB
同步至 Kafka
任务管理
数据订阅(Kafka 版)
数据订阅支持的数据库
MySQL 系列数据订阅
TDSQL PostgreSQL 数据订阅
MongoDB 数据订阅
任务管理
消费管理
前置校验不通过处理方法
检查项汇总
割接说明
监控与告警
支持的监控指标
告警通知功能
通过控制台配置指标告警和事件告警
通过 API 配置指标告警和事件告警
运维管理
配置系统维护时间
任务状态扭转说明
实践教程
本地数据库同步上云
构建双向同步数据结构
构建多对一同步数据结构
构建多活数据中心
数据同步冲突策略如何选择
使用 CLB 代理将其他账号下的数据库迁移至本账号下
通过云联网方式迁移自建数据库至腾讯云数据库
DTS 性能调优最佳实践
常见问题
数据迁移
数据同步
数据订阅 Kafka 版常见问题
数据订阅正则表达式
错误处理
常见错误处理
连通性测试不通过
校验项结果不通过或者出现警告
云联网接入配置源数据时无法选择子网
迁移慢或者进度卡住
数据同步有延时
数据订阅延迟过高
数据消费异常
API 文档
History
Introduction
API Category
Making API Requests
(NewDTS) Data Migration APIs
Data Sync APIs
Data Consistency Check APIs
(NewDTS) Data Subscription APIs
Data Types
Error Codes
DTS API 2018-03-30
相关协议
服务等级协议

使用说明

PDF
聚焦模式
字号
最后更新时间: 2024-07-08 18:59:27
类别
说明
同步对象
1. 只支持同步基础表、视图,不支持同步函数、触发器、存储过程等对象。
2. 相互关联的数据对象需要同时同步,否则会导致同步失败。
3. 增量同步阶段,源库的表名如含有“TDSQLagent”、 “tdsql_sub”字符可能会被过滤或者引起同步异常,因为这些表名与 TDSQL 系统的临时表名相同,TDSQLagent 为扩容时的临时表,tdsql_sub 表为 hash-lish 和 hash-range 的子表,因此建议源端待同步的表名不要设置为这些类型。
源库影响
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 语句,遇到该语句任务跳过不同步。
数据消费说明
在同步任务前,源库中已经存在的全量数据,因为没有数据写入的准确时间,在消费端 Demo 中 happenAt 字段会显示为1970-01-01 08:00:00,该时间字段无需关注。消费增量数据时,时间字段可以正确显示。
重启影响
同步任务过程中,如果发生任务重启(如源库发生 HA 切换会重启,后台检查任务异常会重启),可能会导致同步到目标端 Kafka 的数据出现重复。
DTS 是按最小数据单元进行同步的(全量阶段单个表对象的一块数据即为最小数据单元,增量阶段每标记一个位点就是一个数据单元),如果重启时,刚好一个数据单元同步已完成,则不会导致数据重复;如果重启时,一个数据单元还正在同步中,那么再次启动后需要重新同步这个数据单元,这样就会导致数据重复。
用户如果对重复数据比较关注,请在消费数据时设置去重逻辑。
操作限制
同步过程中请勿进行如下操作,否则会导致同步任务失败。
1. 在全量导出阶段,请勿在源库上执行库或表结构变更的 DDL 操作。
2. 请勿修改、删除源数据库和目标端中的用户信息(包括用户名、密码和权限)和端口号。
3. 请勿在源库上执行清除 Binlog 的操作。
数据类型
1. TDSQL MySQL 作为源库并使用 proxy 方式连接的场景中,浮点数如果源库使用 float 数据类型,会导致全量阶段的数据精度不准确。若需保留数据精度,推荐使用 double 数据类型。全量阶段的精度问题具体影响如下:
全量阶段和增量阶段数据同步的精度不一致。
使用 float 作为键值,全量阶段和增量阶段操作的主键数据不一致。
2. DTS 在全量数据同步阶段,将源库数据导出并导入到目标端 Kafka,均使用 utf8mb4 字符集,以避免因字符集不识别导致乱码问题。
3. 不支持 Geometry 相关的数据类型,遇到该类型数据任务报错。
事务
不支持同时包含 DML 和 DDL 语句在一个事务的场景,遇到该情况任务会报错。
HA 切换和扩容
1. 源库如果是非 GTID 数据库,DTS 不支持源端 HA 切换,一旦源端 TDSQL MySQL 发生切换可能会导致 DTS 增量同步中断。
2. DTS 采用 SET 直连 TDSQL MySQL 的场景,不支持 TDSQL MySQL 扩容。采用 Proxy 连接 TDSQL MySQL 的场景,支持 TDSQL MySQL 逻辑扩容,水平扩容时 DTS 可能会报错。
分区表同步
1. 一级/二级分区表的语法需要符合规范,一级 Hash 分区表仅支持通过 shardkey 方式创建。
TDSQL MySQL 创建分区表的关键语法如下,详细语法请参考 TDSQL MySQL 创建表语法示例
一级 Hash 分区:shardkey
一级 Range 分区:TDSQL_DISTRIBUTED BY RANGE
一级 List 分区:TDSQL_DISTRIBUTED BY LIST
一级 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
2. 增量同步阶段,不支持进行并发的 DDL 操作,需要等前一个 DDL 生效后再执行下一个,否则可能会因为 DDL 乱序导致报错。同时,也不支持快速地对同名表进行 create、drop、create 操作,否则可能会引起表类型错误。
指定启动时间点
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. 请确认 TDSQL MySQL 各集群节点的时间保持一致,否则可能会导致指定位点同步结果不合预期。
7. 如果设置的时间点在 XA 事务持续时间的范围内,则该XA事务不会被同步。对于这种情况,建议时间点可以往前设置一些(在 XA START 的时间之前)。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈