帮你快速理解、总结文档立即下载

创建 TDSQL MySQL 数据订阅

最近更新时间:2026-07-14 12:07:31

我的收藏
本场景介绍使用 DTS 创建腾讯云数据库 TDSQL MySQL 的数据订阅任务操作指导。

前提条件

已准备好待订阅的腾讯云数据库,并且数据库版本符合要求,请参见 数据订阅支持的数据库
已在源端实例中开启 binlog。
已在源端实例中创建订阅账号,需要账号权限如下:REPLICATION CLIENT、REPLICATION SLAVE、PROCESS 和全部对象的 SELECT 权限。 具体授权语句如下:
create user '迁移账号' IDENTIFIED BY '账号密码';
grant SELECT, REPLICATION CLIENT,REPLICATION SLAVE,PROCESS on *.* to '迁移账号'@'%';
flush privileges;

约束限制

1. 订阅的消息保存在 DTS 内置 Kafka(单 Topic)中,目前默认保存时间为最近1天,单 Topic 的最大存储为500G,当数据存储时间超过1天,或者数据量超过500G时,内置 Kafka 都会开始清除最先写入的数据。所以请用户及时消费,避免数据在消费完之前就被清除。
2. 数据消费的地域需要与订阅任务所属的地域相同。
3. 当前不支持 geometry 相关的数据类型。
4. 数据订阅源是 TDSQL MySQL 版时,不支持直接执行授权语句授权,所以订阅账号的权限需要在TDSQL 控制台单击实例 ID,进入账号管理页中添加。
5. 订阅账号所需要的权限即上述授权语句中所示权限,对于为订阅账号进行 __tencentdb__ 的授权操作,在控制台修改权限弹窗中选择对象级特权,勾选所有权限即可。
6. 数据订阅源是 TDSQL MySQL 版时,不支持订阅二级分区表。
6.1 如果在订阅任务启动前源库创建了二级分区表,则校验任务不通过。
6.2 如果在订阅任务运行中源库创建了二级分区表,那么订阅到二级分区表的数据是子表数据(订阅对象选择整库或者整实例,源库在订阅任务启动后创建的二级分区表也会被订阅,导致最终的结果订阅了二级分区表)。因为二级分区表的底层是通过子表实现,所以不建议用户在订阅任务过程中创建二级分区表,否则会导致如下示例的订阅数据差异。 示例:源库表名为“test_a”是二级分区表,那么 DTS 订阅到该表的 DML 的表名为“test_a_tdsql_subp0/test_a_tdsql_subp1”。
7. 订阅任务过程中,如果进行修改订阅对象等操作会发生任务重启,重启后可能会导致用户在 Kafka 客户端消费数据时出现重复。
7.1 DTS 是按最小数据单元进行传输的,增量数据每标记一个 checkpoint 位点就是一个数据单元,如果重启时,刚好一个数据单元传输已完成,则不会导致数据重复;如果重启时,一个数据单元还正在传输中,那么再次启动后需要重新拉取这个数据单元,以保证数据完整性,这样就会导致数据重复。
7.2 用户如果对重复数据比较关注,请自行在消费数据时设置去重逻辑。
8. 源端 TDSQL MySQL 中对表的数量有限制,整个实例最多为5000个,超出后 DTS 任务会报错;同时,表的数量太多会导致源端的访问耗时变大,引起性能抖动和下降。

注意事项

数据订阅源是 TDSQL MySQL 版的订阅任务,各个分片的 DDL 操作都会被订阅并投递到 Kafka,所以对于一个分表的 DDL 操作,会出现重复的 DDL 语句。例如,实例 A 有3个分片,订阅了一个分表 tableA,那么对于表 tableA 的 DDL 语句会订阅到3条。
Kafka 中的每条消息的消息头中都带有分片信息,以 key/value 的形式存在消息头中,key 是 ShardId,value 是 SQL 透传 ID,可根据 SQL 透传 ID 区分该消息来自哪个分片。用户可以在TDSQL 控制台 > 实例列表 > 分片管理中查看 SQL 透传 ID。


支持订阅的 SQL 操作

操作类型
支持的 SQL 操作
DML
INSERT、UPDATE、DELETE
DDL
CREATE DATABASE、DROP DATABASE、CREATE TABLE、ALTER TABLE、DROP TABLE、RENAME TABLE

操作步骤

1. 登录DTS 控制台,在左侧导航选择数据订阅,单击新建数据订阅
2. 在新建数据订阅页,选择相应配置,单击立即购买
参数
描述
计费模式
支持包年包月和按量计费。
数据库
请根据具体数据库类型进行选择。
地域
源库为腾讯云数据库,这里的地域需与源数据库实例的地域保持一致。源库为非腾讯云数据库,这里的地域选择与数据消费的地域保持一致,如果数据消费地域无特殊要求,这里选择离源数据库最近的一个地域即可。
版本
选择 2.0
规格
请根据业务诉求选择规格。
标签
给订阅任务设置标签键与标签值,便于通过标签高效管理多个任务。
订阅实例名称
选择创建后命名,默认任务名称与任务 ID 一致。在订阅任务创建完成之后,可重新设置任务名称。
选择立即命名,在下面输入框,输入任务名称。
协议条款
请务必勾选 我已阅读并同意《云数据库服务条款》
3. 购买成功后,返回数据订阅列表,单击操作列的配置订阅对刚购买的订阅进行配置,配置完成后才可以进行使用。
4. 配置数据订阅页面,选择数据订阅任务,完成后单击连通性测试,测试通过、设置网络后单击保存并下一步
数据订阅任务设置
配置项
说明
实例类型
购买时选择的数据库类型,不可修改。
接入类型
当前仅支持源数据库为腾讯云数据库实例的场景,请选择“云数据库”。
云数据库实例
云数据库实例:源数据库的实例 ID。
支持选择只读/灾备实例,但推荐选择主实例,订阅服务对源库的压力非常小。
账号/密码
账号/密码:源数据库的账号、密码。
网络设置
配置项
说明
网络
请提前指定访问订阅任务 Kafka 的 VPC 环境(包括 VPC 和子网),后续可通过该 VPC 消费数据订阅服务。
说明:
同 VPC 访问:相同 VPC 下的所有 CVM 都可以正常访问订阅数据,无需额外配置。
跨 VPC 访问:如果消费端 CVM 在其他 VPC 中,需要配置云联网来实现跨 VPC 访问。
5. 在订阅类型和对象选择页面,选择订阅类型,单击保存并下一步
配置项
说明
订阅类型
数据更新:订阅源库全部对象的数据更新,包括数据 INSERT、UPDATE、DELETE 操作。
结构更新:订阅源库全部对象的结构创建、修改和删除。
全实例:订阅源库全部对象的数据更新和结构更新。
Kafka 版本
显示 DTS 内置 Kafka 的版本,不可修改。
Topic 分区数量
设置数据投递到内置 Kafka 中 Topic 的分区数量,增加分区数量可提高数据写入和消费的速度。单分区可以保障消息的顺序,多分区无法保障消息顺序,如果您对消费到消息的顺序有严格要求,请选择分区数量为1。
Topic 分区策略
按表名分区:将相同表名的数据写入同一个分区中。
表名+主键分区:将相同主键的数据会写入同一个分区。适用于热点数据的表,可以将热表数据分散到不同分区中,提升并发消费效率。
6. 在预校验页面,预校验任务预计会运行2 - 3分钟,预校验通过后,单击启动完成数据订阅任务配置。
说明:
如果校验失败,请参考校验不通过处理方法进行修复,并重新进行校验。
7. 单击启动后,订阅任务会进行初始化,预计会运行3 - 4分钟,初始化成功后进入运行中状态。
8. 新增消费组,数据订阅 Kafka 版支持用户创建多个消费组(单个订阅任务最多支持创建10个消费组),进行多点消费。数据订阅 Kafka 版消费依赖于 Kafka 的消费组,所以在消费数据前需要创建消费组。
9. 订阅实例进入运行中状态之后,就可以开始消费数据。Kafka 的消费需要进行密码认证,具体示例请参考数据消费 Demo,我们提供了多种语言的 Demo 代码,也对消费的主要流程和关键的数据结构进行了说明。