本文介绍使用 DTS 创建腾讯云数据库 MongoDB 的数据订阅任务操作指导。
版本说明
腾讯云 MongoDB 的数据订阅,支持版本为3.6、4.0、4.2、4.4。
MongoDB 3.6版本仅支持集合级别的订阅。
前提条件
已准备好待订阅的腾讯云数据库,并且数据库版本符合要求,请参见 数据订阅支持的数据库。
建议在源端实例中创建只读账号,可参考如下语法进行操作。控制台操作,请参见 创建只读账号。
# 创建全实例只读账号use admindb.createUser({user: "username",pwd: "password",roles:[{role: "readAnyDatabase",db: "admin"}]})# 创建指定库只读账号use admindb.createUser({user: "username",pwd: "password",roles:[{role: "read",db: "指定库的库名"}]})
约束限制
订阅的消息内容目前默认保存时间为最近1天,超过保存时间的数据会被清除,请用户及时消费,避免数据在消费完之前就被清除。
数据消费的地域需要与订阅实例的地域相同。
DTS 中内置的 Kafka 处理单条消息的大小有一定上限,当源库中的单行数据超过10MB时,这条数据在消费端可能会被丢弃。
数据订阅任务已指定订阅的库或者集合,若在源端数据库进行了删除操作,则该库或者集合的订阅数据(Change Stream)将会被无效化。即使在源数据库中重建该库或者集合,也无法续订数据,需要重置订阅任务,重新勾选订阅对象。
支持订阅的 SQL 操作
操作类型 | 支持的 SQL 操作 |
DML | INSERT、UPDATE、DELETE |
DDL | INDEX:createIndexes、createIndex、dropIndex、dropIndexes COLLECTION:createCollection、drop、collMod、renameCollection DATABASE:dropDatabase、copyDatabase |
订阅配置步骤
1. 登录 DTS 控制台,在左侧导航选择数据订阅,单击新建数据订阅。
2. 在数据传输服务页面,请参照下表,配置界面参数,单击立即购买。
参数名称 | 参数含义 | 配置方式 |
服务类型 | 选择数据传输服务的类型,本文介绍数据订阅服务。 | 选择数据订阅。 |
计费模式 | ||
地域 | 选择订阅服务所属的地域。 | 与待订阅的数据库实例所属地域保持一致。 |
数据库 | 选择数据订阅服务的数据库类型。 | 选择 MongoDB。 |
版本 | 支持通过 Kafka 客户端直接消费。 | 选择 Kafka 版。 |
标签 | 给数据订阅服务指定标签。 | 单击添加,在下拉列表选择标签键与标签值。 |
订阅实例名称 | 指定数据订阅服务名称设置的方式。 | 创建后命名:创建数据订阅服务之后,再设置名称。默认为 name-订阅 ID。订阅 ID 为系统随机分配。 立即命名:在下方输入框,直接设置数据订阅服务名称。 |
自动续费 | 计费模式选择包年包月时,需要设置是否开启自动续费,即
账户余额足够时,订阅服务到期后按月自动续费。 | |
购买时长 | 计费模式选择包年包月时,需要选择购买服务的时长。 | 购买时长越长,享受的优惠越多。 |
购买数量 | 选择购买服务的数量。 | 单次购买最多支持10个任务。 |
3. 购买成功后,返回数据订阅列表,选择刚才购买的订阅任务,在操作列单击配置订阅。
4. 在配置数据订阅向导的选择实例页签,配置数据订阅任务的数据库信息,并进行连通性测试。
参数名称 | 参数含义 | 配置方式 |
订阅 ID / 名称 | 订阅任务的 ID 编号与名称。任务名称默认为 name-订阅 ID。 | 确认数据订阅的 ID 及名称即可。 |
实例类型 | 默认为 MongoDB。 | - |
所属地域 | 订阅服务所属的地域。 | 确认所属地域即可。 |
接入类型 | 选择源端数据库接入数据订阅服务的类型。 | 目前仅支持云数据库。指属于腾讯云数据库实例。 |
云数据库实例 | 选择数据订阅服务具体的 MongoDB 实例。 | 在下拉列表,选择具体的实例 ID。 |
账号 | 设置 MongoDB 实例的访问账号信息。 | 请在输入框输入准备的只读账号信息。 |
密码 | 设置 MongoDB 实例的访问账号对应的密码。 | 请在输入框输入只读账号对应的密码信息,不支持免密访问。 |
Kafka 分区数量 | 选择数据订阅任务对应的 Kafka 的分区数量。在 Kafka 中,消费者可以通过订阅一个或多个主题(Topic)来获取数据,然后从每个主题的一个或多个分区(Partition)中消费数据。 | 支持选择1、4、8。 单分区可以保障消息的顺序,多分区无法保障消息顺序,如果您对消费到消息的顺序有严格要求,请选择 kafka 分区数量为1。 增加分区数量可以提高 Kafka 集群的吞吐量和并行性,因为多个消费者可以同时消费不同的分区。但是,增加分区数量也会增加 Kafka 集群的管理和维护成本,并可能导致数据不均衡或延迟问题。 |
测试连通性 | 测试数据订阅服务与云数据库 MongoDB 实例的连通性。 | 单击测试连通性,等待测试连通性的结果。 如果测试未通过,请根据提示方法进行排查。可单击重新测试,重新进行连通性检查。测试通过才能进行下一步操作。 |
5. 单击下一步,在订阅类型和对象选择页面,配置如下表所示的参数,单击保存配置。
参数名称 | 参数含义 | 配置方式 |
订阅 ID / 名称 | 订阅任务的 ID 编号与名称。 | 确认订阅任务信息正确即可。 |
订阅实例 | 订阅的 MongoDB 数据库实例 ID。 | 确认实例信息正确即可。 |
订阅类型 | 指订阅者可以选择订阅的数据类型。 MongoDB 数据库,使用 Change Stream 特性监控变化的数据,实现数据订阅。 | 默认 Change Stream,不可修改。 |
订阅级别 | 订阅的数据级别,包括全实例、库和集合。 全实例:订阅全实例数据。 库:订阅库级别的数据,选择后,任务设置只允许选择一个库。 集合:订阅集合级别的数据,选择后,任务设置只允许选择一个集合。 | 可根据需要选择数据订阅的级别。不支持选择系统库:admin、local、config。 |
任务设置 | 当订阅级别为库或集合时,显示该参数,指定具体的库和集合。 | 在选择库表区域,勾选需要订阅的一个库或者一个集合。 在已选择区域,确认选择的库与集合是否正确。 |
输出聚合设置 | 该参数针对订阅的数据,配置是否开启聚合设置,再发送给订阅者。 | 开启:单击 ,开启聚合设置。单击添加,在聚合运算符的下拉列表中,选择运算符,然后在聚合表达式的输入框,输入表达式。单击添加,可以添加多条聚合表达式。聚合管道的执行顺序按照添加的聚合操作顺序执行。更多聚合管道信息及其使用示例,请参见 MongoDB 官网文档。 |
Kafka 分区策略 | 当上一步操作,Kafka 分区数量不为 1 时,需要设置分区策略。 按集合名分区:将源库的订阅数据按照集合名进行分区,相同集合名的数据会写入同一个 Kafka 分区中。 自定义分区策略:先通过正则表达式对订阅数据中的库名和集合名进行匹配,匹配到的数据再按照集合名分区、集合名 + objectid 分区。 | 选择自定义分区策略,单击下方自定义分区策略的添加,在库名匹配模式和表名匹配模式的输入框,以正则表达式的方式,分别设定需自定义分区策略的库名或表名的匹配方式,并在分区策略的下拉列表,选择按照集合名分区或按集合名 + objectid 分区。 开启自定义分区策略,将优先匹配自定义分区策略,其次匹配 Kafka 分区策略。 对于不满足上述自定义分区策略的库表,按照默认策略:“按集合名分区” 路由至 Kafka 分区。 |
自定义分区策略
| Kafka 分区策略选择自定义分区策略,显示该参数。设置自定义分区策略规则。 | |
策略组合结果 | Kafka 分区策略选择自定义分区策略,显示该参数。说明自定义分区策略的组合结果。 | |
6. 在预校验页面,预校验任务预计会运行2分钟 - 3分钟,预校验通过后,单击启动完成数据订阅任务配置。
说明:
7. 订阅任务进行初始化,预计运行3分钟 - 4分钟,初始化成功后,进入运行中状态,开始消费数据。
后续操作
1. 新增消费组。
数据订阅 Kafka 版的消费依赖于 Kafka 的消费组,所以在消费数据前需要创建消费组。数据订阅 Kafka 版支持用户创建多个消费组,进行多点消费。