Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

更改自管理副本集节点的 Oplog 大小

在此页面上

  • A. 连接到副本集成员
  • B.(可选)验证 oplog 的当前大小
  • C. 更改副本集成员的 oplog 大小
  • D.(可选)Compact oplog.rs 以回收磁盘空间

警告

不能删除 local.oplog.rs集合。 有关此限制的更多信息,请参阅 oplog集合行为。

此过程使用 replSetResizeOplog 命令来更改副本集每个节点上的 oplog [1] 大小,先在从节点上更改,再在主节点上更改。

首先对每个辅助副本集成员执行这些步骤。更改所有辅助成员的 oplog 大小后,请在主成员上执行这些步骤。

使用 mongosh 连接到副本集节点:

mongosh --host <hostname>:<port>

注意

如果副本集强制执行身份验证,则必须以具有修改 local 数据库权限的用户身份进行身份验证,例如 clusterManagerclusterAdmin 角色。

要查看 oplog 的当前大小,请切换到 local 数据库并对 oplog.rs 集合运行 db.collection.stats()stats() 显示 Oplog 大小为 maxSize

use local
db.oplog.rs.stats().maxSize

maxSize 字段会以字节为单位显示集合的大小。

使用 replSetResizeOplog 命令调整 oplog 的大小。size 是 double,并且必须大于 990 兆字节。如要在 mongosh 中显式调整 oplog 的 size,请使用 Double() 构造函数。

以下操作将副本集成员的 oplog 大小更改为 16 GB,即 16000 MB。

db.adminCommand({replSetResizeOplog: 1, size: Double(16000)})
[1] oplog 的大小可能会超过其配置的大小限制,从而避免删除 majority commit point

减小 oplog 的大小不会自动回收分配给原始 oplog 大小的磁盘空间。必须对 local 数据库中的 oplog.rs 集合运行 compact 才能回收磁盘空间。增加 oplog 大小后,对于在 oplog.rs 集合上运行 compact 没有任何好处。

重要

副本集节点可以在 compact 操作进行时复制 oplog 条目。因此,您再也不需要将 oplog 上的压缩操作限制在维护窗口内,因为 oplog 复制可以在压缩期间照常继续。

不要针对主副本集成员运行 compact 。将 mongo Shell 直接连接到主节点(而不是副本集),并运行 rs.stepDown()。如果成功,主节点将降级。在 mongo Shell 中,对现在的从节点成员运行 compact 命令。

以下操作针对 oplog.rs 集合运行 compact 命令:

use local
db.runCommand({ "compact" : "oplog.rs" } )

对于强制进行身份验证的集群,使用 local 数据库和 oplog.rs 集合上的 compact 特权动作,以用户身份进行身份验证。有关 compact 身份验证要求的完整文档,请参阅 compact 所需特权。

后退

维护