文档菜单
文档首页
/
MongoDB 手册
/ / /

更改自托管副本集成员的oplog大小

本页内容

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

警告

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

此过程使用 replSetResizeOplog 命令更改副本集每个成员的oplog大小,从 次要 成员开始,然后到 主要 成员。

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

使用mongosh:

mongosh --host <hostname>:<port>

注意

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

要查看oplog的当前大小,切换到本地数据库,并对oplog.rs集合运行db.collection.stats()stats()maxSize的形式显示oplog大小。

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

maxSize字段显示集合大小(以字节为单位)。

使用replSetResizeOplog命令调整oplog的大小。大小是一个双精度值,必须大于990兆字节。要在mongosh中显式转换oplog的大小,请使用Double()构造函数。

以下操作将副本集成员的oplog大小更改为16千兆字节,或16000兆字节。

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

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

重要

副本集成员可以在压缩操作进行时复制oplog条目。因此,不再需要将oplog压缩操作限制在维护窗口中,因为oplog复制可以在压缩期间正常进行。

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

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

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

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

返回

维护