问题标签 [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 投票
3 回答
22990 浏览

mongodb - MongoDB:如何获取集合中最后更新文档的最后更新时间戳

是否有一种简单或优雅的方法(或我可以编写的查询)来检索集合中的最后更新时间戳(最后更新文档的)。我可以编写这样的查询来查找最后插入的文档

但我需要有关上次更新文档的信息(可能是插入或更新)。

我知道一种方法是在 oplog 集合中查询集合中的最后一条记录。但考虑到 oplog 的大小可能非常大(也不可信,因为它是一个有上限的集合),这似乎是一项昂贵的操作。有一个更好的方法吗?

谢谢!

0 投票
1 回答
75 浏览

mongodb - Mongodb Oplog 和 System Profiler 的区别

我是 MongoDB 新手,正在尝试跟踪我的数据库上的操作。根据文档,插入之类的操作似乎应该在 oplog 和分析器中,但我只看到它记录在分析器中。对于上下文,我在测试集合(例如'local.col')中的本地数据库中进行插入,但过滤'local.col'只会产生分析器输出的结果,而不是oplog。

基于此,我试图了解这两个工具之间的区别,因为当 oplog 不记录操作时,我在 Internet 寻址上找不到任何东西。

0 投票
2 回答
2094 浏览

mongodb - Mongo Change Streams 未将所有更新返回到集合

我正在尝试使用 Change Streams 来查找/监视对 mongo 集合的更改。

在使用 updateMany 一次更新多个文档时,我无法看到所有更改的文档。但是,如果我一次更新一个,那么我会看到 Stream 中的每个更改。

结果:

0 投票
2 回答
1066 浏览

node.js - 获取表示现在(当前时间)的时间戳以查询 mongodb oplog

oplog 有一个名为 ts 的字段,如下所示:

我想查询oplog,像这样:

如何生成代表现在的时间戳?现在之前 30 秒怎么样?

如果我做:

我收到一条错误消息:

在此处输入图像描述

生成时间戳的正确方法是什么?如何使用正确的 ts 值查询 oplog?

以下是时间戳的文档:http: //mongodb.github.io/node-mongodb-native/core/api/Timestamp.html

但我无法弄清楚低数字/高数字是什么意思。

0 投票
0 回答
337 浏览

mongodb - MongoDB Atlas 是否支持 Meteor 在其共享/免费层上的 oplog 拖尾?

Meteor 支持MongoDB 副本集上的oplog tailing以实现更高效的更新。

MongoDB Atlas有一个提供副本集的免费/共享层,但有一些限制:具体来说,oplog 只能通过字符串命名空间查询。本文描述了在 Atlas 上设置 Meteor,但没有提及这是否适用于共享层或仅适用于具有完整 oplog 支持的专用层。

Meteor 需要哪些 oplog 查询才能正常工作?MongoDB Atlas 是否支持 Meteor 在其免费/共享层上的 oplog 拖尾?

0 投票
0 回答
958 浏览

mongodb - 索引 mongo oplog

在 oplog.rs 集合上建立索引是否明智/推荐/可能?我问的原因是,我相信这是我们不断发出关于扫描对象/返回超过 1000 个警报的原因。这可能还是该警报没有考虑到 oplog/local?

我已经梳理了我们的代码以确保所有查询都存在索引(总的来说,这是一个相当小的代码库)。我还检查了日志以确保不存在任何日志COLLSCAN- 因此可能解释 oplog.rs 集合负责这些警报。这里的另一个因素是警报波动非常大 - 从低于 100 到 1500 - 这听起来像是与 oplog 相关的。

提前致谢!

0 投票
1 回答
517 浏览

mongodb - 分析 Mongo oplog 的“最大”查询

问题:有没有办法知道集合中样本文档的实际大小(即 oplog)?

我的 oplog 对于数据来说似乎太小了。我知道哪些查询可能是最大的贡献者,但我想在这样做之前评估减少查询的影响。

这是一些上下文:

PS:平均每个文档 250kb 似乎太多了,不是吗?

先感谢您!

0 投票
0 回答
386 浏览

mongodb - 以最少的停机时间将 MongoDB 副本集迁移到新服务器

我们有一个 3 成员副本集 mongodb 在 mLab 上运行,用于生产网站。我们希望将数据库移动到托管在我们自己的 Google Cloud 帐户中的新副本集。

我目前的想法是执行以下步骤

  1. 使用 dump/restore 将当前数据库的快照复制到 Google Cloud 上的新副本集

  2. 使用 oplog 使新副本集与当前数据库保持同步

  3. 停止写入当前数据库并将端点切换到新的新副本集

在第 1 步和第 2 步期间仍然可以访问生产网站。我可以在我选择的时间执行第 3 步以减少停机时间。

我没有太多 mongo DBA 经验,所以在寻找建议

  1. 上面的计划有意义吗?
  2. 我应该查看哪些命令/工具来使我的计划生效?

提前致谢!

0 投票
1 回答
178 浏览

mongodb - MongoDB:如何从生成 oplog 中排除集合

我正在处理 mongodb oplog,我在 mongodb 中创建了一个集合来添加处理后的数据,我不希望这个集合再次生成 oplog。

我希望所有其他集合生成 oplog,但需要排除其中一个集合。我怎样才能做到这一点。是否有任何设置可以让 mongodb 知道不为集合生成 oplog。

任何帮助表示赞赏。

0 投票
0 回答
570 浏览

mongodb - MongoDB 4.x 上的副本集和 oplog 拖尾问题

我正在将我的应用程序迁移到新服务器,但我无法让 oplog tailing 工作。这个想法是建立一个单一的副本集,以便我的 Meteor 应用程序有一个 oplog 跟踪。我遵循与旧服务器相同的过程,它可以正常工作。

我的 MongoDB 没有访问控制,因为它仅在本地可用。

老服务器:

Ubuntu 16.04

MongoDB shell 版本 v3.4.1

新服务器:

Ubuntu 1.04

MongoDB shell 版 v4.0.6

我正在使用 Phusion Passenger 服务 Meteor 1.6 应用程序。

这是我设置副本集的方式:

/etc/mongod.conf

/etc/hosts/

重启 MongoDB。然后在 Mongo shell 中:

在我的乘客配置中:

sudo nano /etc/nginx/sites-enabled/myappname.conf

并重启 Nginx。

我已经使用 rs.conf() 检查了 Mongo shell 中的副本集状态:

但是,在 Mongo 日志 /var/log/mongodb/mongod.log 我看到这个:

消息“Unable to reach primary for set rs0”表明它不工作,而且在 mongod.log 文件中我看到查询记录超过 100 毫秒,如果 oplog 拖尾工作正常,这不应该发生。

有什么想法可能是错的吗?MongoDB 版本之间有什么变化吗?我四处寻找,但没有找到任何答案。

感谢您的任何帮助!