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

mongodb - MongoDB:applyOps:管理员未授权执行命令

非常美好的一天,

我在 mongodb 中有如下具有超级用户权限的用户(我使用show users命令确认了角色设置)

当我尝试使用 mongorestore 恢复 oplog 时,出现错误:

失败:恢复错误:错误应用oplog:applyOps:管理员未授权执行命令{applyOps:[{ts:时间戳(1552828309,1),h:4632811839329880092,v:2,op:“c”,ns:“admin .$cmd", o: { create: "system.keys", idIndex: { v: 2, key: { _id: 1 }, name: " id ", ns: "admin.system.keys" } }, o2 : {} } ], $db: "admin" }

注意:我用从 bsondump 获得的最后一个值指定了 oploglimit (--oplogLimit=1552828432) 这是正确的吗?还是我错过了什么?

(IE)

任何帮助表示赞赏。提前致谢。

0 投票
1 回答
20 浏览

mongodb - MongoDB 跟踪哪个用户 mande 更改

我们正在运行一个微服务架构,其中多个系统可以访问 MongoDB 中的共享集合(是的,有问题的设计,但我们正在过渡以摆脱这种情况。)

我们试图找到一种方法来跟踪 oplog 中的哪些更改是由哪个“用户”/服务(每个微服务使用不同的凭据)实际进行了此更改。如果我们在我们的数据库中发现任何无效更改,这将非常容易找出哪个系统出了问题。

有任何想法吗?

到目前为止,我唯一想到的总是必须更改客户端代码,我想避免这种情况。

0 投票
1 回答
781 浏览

mongodb - 没有过滤器的 kafka 连接器 debezium mongodb CDC 更新/$set 消息(_id 值)

我正在尝试使用 debezium mongodb 连接器设置从 mongodb 到 kudu 的同步。但正如 debezium doc 所说,我自己也尝试过,发现 debezium mongodb CDC update/$set 消息没有过滤器(_id 值)。

我不明白为什么要这样设计,没有过滤器真的不知道更新了哪个文档。我下载了这个连接器的源代码并尝试修复它。看起来类io.debezium.connector.mongodb.transforms.UnwrapFromMongoDbEnvelope是使用此类代码提取 MongoDB 操作日志消息的地方。而且这个文件混淆了两者_idid操作,看起来连接器的提交者确实试图_id在 CDC 更新消息中包含值。重新构建和部署连接器后,我尝试将 CDC 消息更改valueDocument.append("id", keyDocument.get("id"));valueDocument.append("id", keyDocument.get("_id"));仍然没有_id值。

任何熟悉 debezium 的人都可以帮助我吗?

@jiri,非常感谢您的回复,我收到的信息总是这样:

我搜索并发现其他人可以像这篇文章一样获得 debezium mongodb CDC: https ://rmoff.net/2018/03/27/streaming-data-from-mongodb-into-kafka-with-kafka-connect-and- debezium/ 像这样: { "after": {\"_id\" : {\"$oid\" : \"58385328e4b001431e4e497a\"}, ....

可以看到我无法获取_id,所以我无法知道在哪个文档/记录上进行了更改,但是对于上面的帖子,作者似乎可以获取_id,也可以通过检查代码来获取_id。我在上面的帖子中使用了这两个0.9.5Final和哪个。0.7.4 rev对我来说都没有运气,总是没有 _id 值。

0 投票
2 回答
1758 浏览

mongodb - MongoDB 更改流:我可以在更新/删除之前获得价值吗?

更新操作上的更改流事件仅返回更改到的文档,与 oplog 相同。我可以在更新之前获取文档(或一些更新的值)吗?

MySQL 基于行的 binlog 可以使用完整的 binlog_row_image 来做到这一点。

0 投票
1 回答
90 浏览

mongodb - 阅读较旧的文档 - 例如 `tail --follow` - 但对于 mongodb 集合

我熟悉 MongoDB oplog 和 change-streams,如下所示:

但我的问题是,有没有办法获取最新的 100 个文档,然后阅读更改而不会丢失和文档?就像tail -f但是对于 mongodb 上限集合?

0 投票
0 回答
37 浏览

mongodb - ChangeStream#destroy 不是方法吗?

我收到了这个错误:

这是我的代码:

似乎很奇怪,destroy() 不是 ChangeStream 上的有效方法。有谁知道关闭 ChangeStream 的正确方法?TypeScript 打字说这个方法是可用的,但我猜它不是。

0 投票
1 回答
508 浏览

mongodb - MongoDB 启用 oplog 窗口

尝试在本地启用oplog

添加C:\Program Files\MongoDB\Server\4.2\bin\mongod.cfg

重启mongod,但是local.oplog不存在

如何正确启用 oplog?

UPD:使用 MongoDB 4.2、Windows 10

0 投票
1 回答
80 浏览

mongodb - 获取集合操作序列MongoDB

我需要通过守护进程在运行时获取收集操作的序列,以将其写入类似于消息代理的系统。从指定位置读取历史的必要能力

也许我可以通过阅读 opLog 来解决这个问题。

  1. 使用opLog是正确的解决方案吗?
  2. oplog 是否包含所有数据库的记录,而不是被集合分割?

使用 MongoDB v4.2

0 投票
1 回答
168 浏览

mongodb - Meter Redis Scaling更新“找不到集合”

这些天我添加了 Meteor redis oplog scaling,但它一直显示以下错误。

谁能在这个职位上提供帮助?

0 投票
1 回答
548 浏览

mongodb - 如何缩小 MongoDB 的 oplog.rs 集合?

在 MongoDB 4.2.5(3 个节点复制集)中存储一些二进制数据后,该oplog.rs集合确实增长到 ca。700MB。二进制数据被删除,数据模型被重组,但oplog.rs集合的大小保持不变(如预期的那样)。我确实知道这是一个具有最大尺寸的封顶集合,最终它将重用空间。不过,就我而言,我想收回空间并重新开始。该数据库主要用于内部测试目的。我不介意从 oplog 中丢失一些数据,但我确实介意拥有一个大的 oplog 文件,因为整个数据库只有几 MB。

在复制集场景中emptycapped对集合使用命令是否安全?oplog.rs我需要在每个节点上运行此命令吗?删除后我是否需要压缩集合(最后一部分来自https://docs.mongodb.com/manual/tutorial/change-oplog-size/)?

有没有其他方法可以优雅地“重置” oplog 并释放空间?