问题标签 [mongodb-oplog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
97 浏览

mongodb - In Spring MongoDB update, MonogDB doc replaced/lost fields, becomes empty, oplog "o" for this update has no $set, $unset, has only objectId as in "o2"

Context:

  • Spring Data MongoDB is used and updating a document caused the following issue.

Issue :

After an update operation performed, document in collection lost all the data and kept only ObjectId in it.

Checking the oplog entry found an unusual value, understand that the o2field ObjectId says the object to be updated and ofield says about operations being performed/updated.

In this particular instance o2field has the expected value, but o field also has the same value instead of the update operation details to be done.

Question :

Any idea when can we expect such an oplog as mentioned below without $set or $unset for update operations ?

After this operation, actual document with ObjectId in collection lost all the fields except ObjectId.

The update oplog for the same object few milliseconds ago is given below. Which has the right set of operations.

0 投票
1 回答
310 浏览

mongodb - 如何在mongodb java sdk中的部署级别更改流中过滤集合

我正在尝试使用 MongoDB java SDK 在集合名称上使用管道过滤器设置部署级别更改流。这是代码片段。

但是这个查询不匹配任何文档。以下管道文档的变体也不起作用。

令人惊讶的是,管道适用于变更流文档的其他领域。例如,这有效:

我不确定为什么会这样。我将不胜感激在这方面的任何帮助。

0 投票
0 回答
14 浏览

mongodb - 在辅助节点中查找“commitIndexBuild”操作日志条目

文件

如果 mongod 是辅助节点,它会等待直到复制“commitIndexBuild”或“abortIndexBuild”操作日志条目:

而且我想知道辅助接收到该操作日志。但是我怎样才能查询到secondary的本地oplog呢?哪个字段有“commitIndexBuild”?

0 投票
1 回答
186 浏览

node.js - Oplog 不记录事务中的操作 - MongoDb

如果您运行以下代码,outside a transaction对象将作为插入操作出现在 oplog 中,但 oplog 将没有记录,inside a transaction但它们都会正确保存到集合中。

我尝试查找问题但没有运气,尽管我能够确认在我的 mongodb 服务器版本中,oplog 将为每个操作创建一个单独的条目,尽管我既没有得到4.0样式,也没有得到4.2!

编码

操作日志结果

查询:db.oplog.rs.find({}).sort({$natural: -1}) 实际计数:1 预期计数:2


  • Mongo 数据库版本:4.2
  • Mongo 数据库设置:3 个成员副本集(托管在 Atlas 上)
  • Mongo驱动:V3.6和V4都试过(都兼容数据库版本
0 投票
2 回答
132 浏览

mongodb - 在 MongoDB Bitnami Replicaset 架构中配置 Oplog 大小

我找不到在 MongoDB 的 Bitnami Helm 图表中配置更高 MongoDB oplog 大小的方法,这里

我的理解是oplog会将所有最近的数据保持到一定的大小,或者年龄,然后丢弃。该 oplog 允许离线的副本在它们重新在线后赶上主 oplog。

但是我看不到配置它的方式,也看不到它采用的默认值。根据 MongoDB 文档,对于 linux 将是 5% 的可用空间,最小为 990MB,最大为 50GB,但对于 Bitnami helm chart,这可能会有所不同。

我将把图片保存在数据库中,压缩后每张大约 1MB。这将比仅使用文本的数据库更快地填充 oplog。

作为一个额外的问题,隐藏的 Mongo 节点是否需要与其他可能成为主节点的节点具有相同大小的 oplog?我也找不到答案。

0 投票
1 回答
49 浏览

mongodb - 隐藏节点上的 MongoDB Oplogs

我了解 Mongo 副本集中的 Oplog 是从主节点复制到辅助(或隐藏)节点的信息。

我有一个存储大量图片的应用程序。我将 Primary 和 Secondary Mongo 节点 Oplog 大小配置为 50GB。但是我还不明白像图片这样的大文件在 Oplog 上的行为。

假设一个最近创建的空数据库。前 50GB 的图片是否会在数据库中存储两次,一次在 Oplog 中,一次在实际数据库中?那么 Oplog 会用新的图片刷新(不会再增长),数据库会继续增长吗?如果这是实际情况,那么这种行为对于所有类型的节点是否都相同?(主要的,次要的,隐藏的......)

Mongo隐藏节点会是什么情况?隐藏节点永远不能是Primary,它是否仍然必须具有与主/从节点中的Oplog一样大的Oplog?

0 投票
1 回答
103 浏览

mongodb - 在 MongoDB ReplicaSet 中,优先级为 0 的节点(隐藏、延迟等)是否必须与可以成为主节点的节点具有相同的 Oplog 大小?

我了解 MongoDB 副本集中的 Oplog 集合。当数据承载节点出现故障时,更大的 Oplog 意味着更大的恢复窗口。

但是对于永远不能成为主节点的节点,Oplog 大小重要吗?

恢复宕机节点的规则是,其 Oplog 中的最新操作当前也将在主节点的 Oplog 中找到。由于主节点 Oplogs 很大,而我们尝试恢复的节点的最新操作是记录在其 Oplog 中的最后一个操作(即使 Oplog 很小也可以跟踪),大小真的很重要吗“优先级 0”节点 Oplog?

我知道,默认情况下,优先级为 1 的辅助节点可以从任何其他承载数据的节点复制其 Oplog 中的新内容(即使该节点的优先级为 0),但是这是将大 Oplog 保持在优先级上的唯一原因0 节点?如果是这样,仅禁用该选项并强制承载数据的节点仅从主节点复制将允许我在优先级为 0 的节点中拥有一个小的 Oplog。

0 投票
0 回答
38 浏览

mongodb - mongodb kafka sink 延迟

我在一个项目中工作。我们正在使用事件源架构进行实时流处理。我创建了一个融合的 kafka 连接器,用于从 mongodb 读取数据并写入 kafka。我发现这个过程有 6 到 10 秒的延迟。检查后,我的同事说这种延迟是由于 mongo 写入数据库和副本以及 oplog 之间的延迟。因此,使用 lag 写入 oplog 的数据和 kafka conenctor 从 oplog 读取数据,因此 lag 传播。我想看看如何将延迟减少到 1 或 2 秒。我使用 mongodb 4.x 和 confluent-kafka-connect-jdbc-5.4.1-1

0 投票
1 回答
40 浏览

mongodb - 无法使用 oplog 中的时间戳进行过滤

我有一个由 MongoDB Kafka 连接器生成的 oplog 消息流。我想告诉连接器从给定的时间点开始生成消息。我可以使用管道来做到这一点[在此处记录|https://docs.mongodb.com/kafka-connector/current/kafka-source/。]

我正在尝试准备一个将clusterTime用于此操作但没有运气的查询。clusterTime 是一个 BSON 时间戳。我正在使用 MongoDB v4.0.9。

这是我如何测试它

当我们至少有一个元素时,我们可以试一试并按 clusterTime 过滤。我尝试了很多方法,比如

或者

有没有其他方法可以在不使用最新版本的$getField情况下实现这一目标?$function

我设法从该字段中提取了纯时间戳,但使用了 $function 功能。不幸的是,MongoDB v5.0 支持它,所以我不能使用它。

这是可用于重现问题的最少代码

0 投票
1 回答
26 浏览

mongodb - 为什么 Oplog 会减少 Mongodb

什么类型的查询会导致 oplog 减少?我如何找出哪些查询正在影响我的 oplog 减少(当月比较时)?你可以帮帮我吗?