有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
本文介绍使用 DTS 创建腾讯云数据库 MongoDB 的数据订阅任务操作指导。

版本说明

腾讯云 MongoDB 的数据订阅,支持版本为3.6、4.0、4.2、4.4。
MongoDB 3.6版本仅支持集合级别的订阅。

前提条件

已准备好待订阅的腾讯云数据库,并且数据库版本符合要求,请参见 数据订阅支持的数据库
建议在源端实例中创建只读账号,可参考如下语法进行操作。控制台操作,请参见 创建只读账号
# 创建全实例只读账号
use admin
db.createUser({
user: "username",  
pwd: "password",  
roles:[    
{role: "readAnyDatabase",db: "admin"}  
]
})

# 创建指定库只读账号
use admin
db.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)中消费数据。
支持选择148
单分区可以保障消息的顺序,多分区无法保障消息顺序,如果您对消费到消息的顺序有严格要求,请选择 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 版支持用户创建多个消费组,进行多点消费。
2. 消费订阅数据。 订阅任务进入运行中状态之后,就可以开始消费数据。Kafka 的消费需要进行密码认证,多语言的示例代码,请参见 消费订阅数据 中的 Demo。