M0 计划中的 MongoDB Altas oplogs

问题描述 投票:0回答:1

我一直在使用本地主机(docker)版本的 mongodb 和副本集在本地开发一个应用程序,这样我就可以使用变更流功能。我的Python应用程序(使用pymongo)能够愉快地观看steam,并存储resume_token。停止和启动我的应用程序可以无缝工作,并从商店resume_token恢复。

我的下一步是使用 mongo 的托管版本。当我仍在测试时,我在 Atlas 上选择了 M0 实例。星期五(10 月 24 日),我能够将我的应用程序连接到 atlas 数据库,一切运行良好,我能够创建文档并接收更改事件,没有任何问题,包括重新启动我的应用程序。

今天(10 月 21 日星期一),当我尝试启动我的应用程序时,它陷入了错误状态,因为无法找到resume_token。当我检查数据库时,local.oplog.rs 集合中没有数据(完全为空),尽管几天前就有了。我的应用程序整个周末都关闭,所以它没有破坏任何东西。

因此,我创建了一些手动条目来测试,并且 oplog 再次填充了适当的条目(仅是新条目)。

谁能解释一下为什么我的oplog被清空了?我已经尝试了几个小时来查找有关 M0 帐户限制的文档,尽管存在差异,但没有任何内容表明 oplog 会被清除。这是一个真正的问题。

如果在 M0 计划中使用 oplog 时出现问题,我可以使用的最低计划是什么,这将为我提供可靠的 oplog(我知道大小会使其删除条目,但我没有在db 更改大小)?

mongodb atlas mongodb-oplog
1个回答
0
投票

因此,在与 Atlas 联系后,他们确实记录了删除超过 24 小时的记录的事实。

https://www.mongodb.com/docs/atlas/cluster-additional-settings/#:~:text=Atlas%20enables%20auto%2Dscaling%20by,从%20the%20oplog中删除%20them%20

这很微妙,而且它与 storage.oplogMinRetentionHours 相关联。该文档明确指出,在删除 oplog 日志之前,必须超过 oplog 容量和 minRetention。我的包含 3 条记录的 oplog 不可能超出任何 oplog 容量设置(除非 Atlas 默认将其设置为 0),所以我觉得这充其量是令人困惑的。

共享(M0/M2/M5)计划也无法设置 oplogMinRetentionHours 值,这在文档中更加明显。

© www.soinside.com 2019 - 2024. All rights reserved.