第 4 章 MongoDB 的 Debezium 连接器


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

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

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

4.1. Debezium MongoDB 连接器概述

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

MongoDB 副本集 由一组服务器组成,所有服务器都有相同数据的副本,并且复制可确保客户端对副本集 的主 文档所做的所有更改都会正确应用到其他副本集的服务器,称为 第二个信息。MongoDB 复制的工作原理是:主记录其 oplog (或操作日志),第二方都会读取主的 oplog,并应用所有操作对自己的文档。当将新的服务器添加到副本集时,该服务器首先在主服务器上执行所有数据库和集合 的快照,然后读取主的 oplog 以应用自快照开始的所有更改。当该服务器捕获到主 oplog 的尾部时,该服务器就成为次要(并可处理查询)。

4.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.