Flink CDC中mongodb 整库同步的时候报错 这个是咋回事?Caused by: com.mongodb.MongoCommandException: Command failed with error 73 (InvalidNamespace): '{aggregate: 1} is not valid for '$changeStream'; a collection is required.' on server 10.2.6.47:23451. The full response is {"operationTime": {"$timestamp": {"t": 1700640845, "i": 2}}, "ok": 0.0, "errmsg": "{aggregate: 1} is not valid for '$changeStream'; a collection is required.", "code": 73, "codeName": "InvalidNamespace", "$clusterTime": {"clusterTime": {"$timestamp": {"t": 1700640845, "i": 2}}, "signature": {"hash": {"$binary": {"base64": "H3qpRhn3haQtOsnLYPaExpQOchk=", "subType": "00"}}, "keyId": 7299463955125108737}}} ?
这个错误是因为在Flink CDC中,MongoDB的整库同步时使用了错误的命令。正确的命令应该是使用$changeStream
操作符来监听集合的变化,而不是使用聚合管道(aggregate pipeline)。
要解决这个问题,你需要将Flink CDC的配置更改为使用$changeStream
操作符来监听整个数据库的变化。具体操作如下:
source.mongodb.database-name
设置为你想要同步的数据库名称。source.mongodb.collection-names
设置为一个空数组,表示监听整个数据库的所有集合。完成上述步骤后,重新运行Flink CDC作业,它应该能够正常同步整个数据库的变更。
根据报错信息,看起来是在 Flink CDC 使用 MongoDB 进行整库同步时出现了错误。具体的错误信息为 Command failed with error 73 (InvalidNamespace): '{aggregate: 1} is not valid for '$changeStream'; a collection is required.'
。
这个错误通常出现在尝试使用 $changeStream
命令对整个数据库进行操作时。$changeStream
是 MongoDB 的命令,用于监控集合中的变更。然而,$changeStream
命令需要指定一个具体的集合(collection),而不支持对整个数据库进行操作。
解决此问题的常见方法是,确保您的 Flink CDC 配置正确指定了要同步的 MongoDB 集合,而不是整个数据库。检查配置文件中是否指定了正确的数据库名称和集合名称。
如果您要同步整个 MongoDB 数据库的所有集合,可以考虑分别配置每个集合的同步任务,以便逐个同步每个集合。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。