问题标签 [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.
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)
任何帮助表示赞赏。提前致谢。
mongodb - MongoDB 跟踪哪个用户 mande 更改
我们正在运行一个微服务架构,其中多个系统可以访问 MongoDB 中的共享集合(是的,有问题的设计,但我们正在过渡以摆脱这种情况。)
我们试图找到一种方法来跟踪 oplog 中的哪些更改是由哪个“用户”/服务(每个微服务使用不同的凭据)实际进行了此更改。如果我们在我们的数据库中发现任何无效更改,这将非常容易找出哪个系统出了问题。
有任何想法吗?
到目前为止,我唯一想到的总是必须更改客户端代码,我想避免这种情况。
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 操作日志消息的地方。而且这个文件混淆了两者_id
和id
操作,看起来连接器的提交者确实试图_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 值。
mongodb - MongoDB 更改流:我可以在更新/删除之前获得价值吗?
更新操作上的更改流事件仅返回更改到的文档,与 oplog 相同。我可以在更新之前获取文档(或一些更新的值)吗?
MySQL 基于行的 binlog 可以使用完整的 binlog_row_image 来做到这一点。
mongodb - 阅读较旧的文档 - 例如 `tail --follow` - 但对于 mongodb 集合
我熟悉 MongoDB oplog 和 change-streams,如下所示:
但我的问题是,有没有办法获取最新的 100 个文档,然后阅读更改而不会丢失和文档?就像tail -f
但是对于 mongodb 上限集合?
mongodb - ChangeStream#destroy 不是方法吗?
我收到了这个错误:
这是我的代码:
似乎很奇怪,destroy() 不是 ChangeStream 上的有效方法。有谁知道关闭 ChangeStream 的正确方法?TypeScript 打字说这个方法是可用的,但我猜它不是。
mongodb - MongoDB 启用 oplog 窗口
尝试在本地启用oplog
添加C:\Program Files\MongoDB\Server\4.2\bin\mongod.cfg
重启mongod,但是local.oplog不存在
如何正确启用 oplog?
UPD:使用 MongoDB 4.2、Windows 10
mongodb - 获取集合操作序列MongoDB
我需要通过守护进程在运行时获取收集操作的序列,以将其写入类似于消息代理的系统。从指定位置读取历史的必要能力
也许我可以通过阅读 opLog 来解决这个问题。
- 使用opLog是正确的解决方案吗?
- oplog 是否包含所有数据库的记录,而不是被集合分割?
使用 MongoDB v4.2
mongodb - Meter Redis Scaling更新“找不到集合”
这些天我添加了 Meteor redis oplog scaling,但它一直显示以下错误。
谁能在这个职位上提供帮助?
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 并释放空间?