0

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

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

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

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

4

1 回答 1

1

对于你的第一个问题,是的。Oplog 对数据库进行了所有更改。在这种情况下,每个插入(图片)都插入到 DB 和 oplog。

当 oplog 达到其最大大小时,较旧的信息会被较新的信息覆盖。

这将发生在副本集的所有节点中,因为这些节点中的任何一个(隐藏的除外)都可以成为主节点(基本上,优先级当然可以防止它发生 IRL)。

Oplog 应该那么大,任何节点都可以在“停电”之后“赶上”(恢复)丢失的更改(初始复制属于同一类别)。

隐藏节点的 oplog 可以比主节点或辅助节点更小,但它的实际最小大小比最大的单个插入/更新“更大”。

于 2021-08-28T16:13:32.227 回答