创建 MySQL 或 TDSQL-C MySQL 数据订阅

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

我的收藏
本场景介绍使用 DTS 创建 MySQL 或 TDSQL-C MySQL 的数据订阅任务操作指导。

前提条件

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

约束限制

订阅的消息保存在 DTS 内置 Kafka(单 Topic)中,目前默认保存时间为最近1天,单 Topic 的最大存储为500G,当数据存储时间超过1天,或者数据量超过500G时,内置 Kafka 都会开始清除最先写入的数据。所以请用户及时消费,避免数据在消费完之前就被清除。
数据消费的地域需要与订阅任务所属的地域相同。
当前不支持 geometry 相关的数据类型。
订阅任务过程中,如果进行修改订阅对象等操作会发生任务重启,重启后可能会导致用户在 kafka 客户端消费数据时出现重复。
DTS 是按最小数据单元进行传输的,增量数据每标记一个 checkpoint 位点就是一个数据单元,如果重启时,刚好一个数据单元传输已完成,则不会导致数据重复;如果重启时,一个数据单元还正在传输中,那么再次启动后需要重新拉取这个数据单元,以保证数据完整性,这样就会导致数据重复。
2023年之后新建的 MySQL 或 TDSQL-C MySQL 订阅任务,DTS 已支持数据去重,消费 Demo 中包含了去重逻辑,不会产生数据重复;2023年之前的任务,用户如果对重复数据比较关注,需要自行在消费数据时设置去重逻辑。

支持订阅的 SQL 操作

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

操作步骤

1. 登录 DTS 控制台,在左侧导航选择数据订阅,单击新建数据订阅
2. 在新建数据订阅页,选择相应配置,单击立即购买
计费模式:支持包年包月和按量计费。
地域:源库为腾讯云数据库,这里的地域需与源数据库实例的地域保持一致。源库为非腾讯云数据库,这里的地域选择与数据消费的地域保持一致,如果数据消费地域无特殊要求,这里选择离源数据库最近的一个地域即可。
数据库:请根据具体数据库类型进行选择。
版本:选择 kafka 版,支持通过 Kafka 客户端直接消费。
订阅实例名称:编辑当前数据订阅实例的名称。
3. 购买成功后,返回数据订阅列表,单击操作列的配置订阅对刚购买的订阅进行配置,配置完成后才可以进行使用。

4. 在配置数据库订阅页面,选择源数据库相应配置,完成后单击连通性测试,测试通过后单击下一步

配置项
说明
实例类型
购买时选择的数据库类型,不可修改。
建议选择主库进行订阅,订阅服务对源库的压力非常小。
接入类型
请根据您的场景选择,不同接入类型的准备工作请参考 准备工作概述
公网:源数据库可以通过公网 IP 访问。
云主机自建:源数据库部署在 腾讯云服务器 CVM 上。
专线接入:源数据库可以通过 专线接入 方式与腾讯云私有网络打通。
VPN接入:源数据库可以通过 VPN 连接 方式与腾讯云私有网络打通。
云数据库:源数据库属于腾讯云数据库实例。
云联网:源数据库可以通过 云联网 与腾讯云私有网络打通。
公网
主机地址:源数据库 IP 地址或域名。
端口:源数据库使用的端口。
云主机自建
云主机实例:云服务器 CVM 的实例 ID。
端口:源数据库使用的端口。
专线接入
私有网络专线网关/:专线接入时只支持私有网络专线网关,请确认网关关联网络类型。
私有网络:选择私有网络专线网关和 VPN 网关关联的私有网络和子网。
主机地址:源数据库 IP 地址。
端口:源数据库使用的端口。
VPN 接入
VPN 网关:VPN 网关,请选择通过 VPN 网关接入的 VPN 网关实例。
私有网络:选择私有网络专线网关和 VPN 网关关联的私有网络和子网。
主机地址:源数据库 IP 地址。
端口:源数据库使用的端口。
云数据库
云数据库实例:源数据库的实例 ID。
建议选择主库进行订阅,订阅服务对源库的压力非常小。
源数据库为腾讯云数据库 MySQL 时,支持选择只读实例、灾备实例,但使用只读实例时,需要先 提交工单 进行申请。腾讯云 MySQL 单节点(原基础版-已下线)作为源端,接入方式不能使用“云数据库”,可以使用“公网”接入方式;MySQL 单节点(云盘版)作为源端不限制,正常使用“云数据库”即可。
源数据库为腾讯云 TDSQL-C MySQL 时,支持选择只读实例。
云联网
主机地址:源数据库的主机 IP 地址。
端口:源数据库使用的端口。
私有网络云联网:云联网实例名称。
接入 VPC:接入 VPC 指的是云联网中接入订阅链路的 VPC。请在云联网关联的所有 VPC 中,选择除了源数据库所属 VPC 外的其他 VPC。 例如,广州地域数据库作为源数据库,则接入 VPC 选择其他地域,如成都 VPC 或者上海 VPC。
子网:已选择 VPC 网络的子网名称。
接入 VPC 地域:购买任务时选择的源数据库地域与接入 VPC 地域需要保持一致,如果不一致,DTS 会将购买任务中选择的源数据库地域,改为接入 VPC 地域。
账号/密码
账号/密码:源数据库的账号、密码。
连接方式
SSL 安全连接指 DTS 与源数据库通过 SSL(Secure socket layer)安全连接,对传输链路进行加密。
选择 SSL 安全连接可能会增加数据库的连接响应时间,一般腾讯云内网链路相对较安全,无需开启 SSL 安全连接,采用公网/专线等传输方式,并且对数据安全要求较高的场景,需要开启 SSL 安全连接。选择 SSL 安全连接前,需要先在源数据库中开启 SSL 加密。
支持 XA 事务
勾选后 DTS 数据订阅可以识别源库进行的 XA 事务操作,在消费端获取的数据是按照 XA 事务的逻辑进行解析。 源库发生了 XA 事务回滚(rollback),DTS 可以识别 rollback,源库上 rollback 及 rollback 之前的 SQL 语句不会再传递到消费端。
当前仅 MySQL、TDSQL-C MySQL 的数据订阅支持 XA 事务。
5. 在订阅类型和对象选择页面,选择订阅类型,单击保存配置

配置项
说明
订阅类型
数据更新:订阅源库全部对象的数据更新,包括数据 INSERT、UPDATE、DELETE 操作。
结构更新:订阅源库全部对象的结构创建、修改和删除。
全实例:订阅源库全部对象的数据更新和结构更新。
订阅数据格式
支持 ProtoBuf、Avro 和 JSON 三种格式。 ProtoBuf 和 Avro 采用二进制格式,消费效率更高,JSON 采用轻量级的文本格式,更加简单易用。
Topic 分区数量
设置数据投递到内置 kafka 中 Topic 的分区数量,增加分区数量可提高数据写入和消费的速度。单分区可以保障消息的顺序,多分区无法保障消息顺序,如果您对消费到消息的顺序有严格要求,请选择分区数量为1。
Topic 分区策略
按表名分区:将相同表名的数据写入同一个分区中。
表名+主键分区:将相同主键的数据会写入同一个分区。适用于热点数据的表,可以将热表数据分散到不同分区中,提升并发消费效率。
使用自定义分区策略
先通过正则表达式对订阅数据中的库名和表名进行匹配,将匹配到的数据按照表名、表名+主键、列进行分区投递。再将剩余未匹配到的数据,按照 Topic 分区策略进行投递。详情内容请参考设置分区策略
6. 在预校验页面,预校验任务预计会运行2分钟 - 3分钟,预校验通过后,单击启动完成数据订阅任务配置。
说明:
如果校验失败,请参考 校验不通过处理方法 进行修正,并重新进行校验。

7. 单击启动后,订阅任务会进行初始化,预计会运行3分钟 - 4分钟,初始化成功后进入运行中状态。
8. 新增消费组,数据订阅 Kafka 版支持用户创建多个消费组(单个订阅任务最多支持创建10个消费组),进行多点消费。数据订阅 Kafka 版消费依赖于 Kafka 的消费组,所以在消费数据前需要创建消费组。
9. 订阅实例进入运行中状态之后,就可以开始消费数据。Kafka 的消费需要进行密码认证,具体示例请参考 数据消费 Demo,我们提供了多种语言的 Demo 代码,也对消费的主要流程和关键的数据结构进行了说明。