搜索

第 5 章 MongoDB 的 Debezium 连接器

download PDF

Debezium 的 MongoDB 连接器跟踪 MongoDB 副本集或 MongoDB 分片集群,以记录数据库和集合中的更改,以记录 Kafka 主题中的事件。连接器会自动处理分片集群中添加或删除分片,更改每个副本集的成员资格、每个副本集中的选举,以及等待通信问题的解决。

有关与此连接器兼容的 MongoDB 版本的详情,请查看 Debezium 支持的配置页面

使用 Debezium MongoDB 连接器的信息和步骤进行组织,如下所示:

5.1. Debezium MongoDB 连接器概述

MongoDB 的复制机制提供冗余和高可用性,也是在生产环境中运行 MongoDB 的首选方法。MongoDB 连接器捕获副本集或分片集群中的更改。

MongoDB 副本集 由一组服务器组成,它们都有相同数据的副本,而复制可确保客户端对副本集 的主 文档进行的所有更改都正确应用到其他副本集的服务器,称为 secondaries。MongoDB 复制的工作原理是,其 oplog 中的更改(或操作日志)可以正常工作,然后每个 secondaries 都会读取主的 oplog,并将所有操作都应用到自己的文档。当新的服务器添加到副本集时,该服务器首先对主设备执行所有数据库和集合 的快照,然后读取主的 oplog 以应用自开始快照后可能所做的所有更改。当新的服务器捕获到主 oplog 的尾部时,这个新的服务器成为辅助服务器(并且能够处理查询)。

5.1.1. MongoDB 连接器如何使用更改流捕获事件记录的描述

虽然 Debezium MongoDB 连接器没有成为副本集的一部分,但它使用类似的复制机制来获取 oplog 数据。主要区别在于连接器不会直接读取 oplog。相反,它会将 oplog 数据的捕获和解码委派给 MongoDB 更改流 功能。通过更改流,MongoDB 服务器会公开集合中发生的变化作为事件流。Debezium 连接器监控流,然后提供下游更改。连接器第一次检测到副本集,它会检查 oplog 以获取最后记录的事务,然后执行主数据库和集合的快照。在连接器完成复制数据后,它会从之前读取的 oplog 位置创建一个更改流。

当 MongoDB 连接器处理更改时,它会定期记录事件源自于 oplog 流的位置。当连接器停止时,它会记录它处理的最后 oplog 流位置,以便重启后它可以从该位置恢复流。换句话说,可以停止、升级或维护连接器,并在以后重启一段时间,并且始终在不丢失单一事件的情况下准确获取关闭的位置。当然,MongoDB oplogs 通常以最大大小设置,因此如果连接器长时间停止,则 oplog 中的操作可能会在连接器有机会读取它们前清除。在这种情况下,重启连接器检测到缺少的 oplog 操作,执行快照,然后继续流更改。

MongoDB 连接器还接受在副本集的成员资格和领导、分片集群中的分片以及可能导致通信失败的网络问题。连接器始终使用副本集的主节点流更改,因此当选举和不同的节点变为主要节点时,连接器将立即停止流更改,连接到新的主节点,并使用新的主节点开始流更改。同样,如果连接器无法与副本集主通信,它会尝试重新连接(使用 exponential backoff,以便不会大量网络或副本集)。重新建立连接后,连接器会从捕获的最后一个事件继续流更改。这样,连接器会动态调整副本集成员资格中的更改,并自动处理通信中断。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.