replSetResizeOplog
¶3.6版的新功能。
使用replSetResizeOplog
管理命令来更改副本集成员的操作日志的大小。[1]
replSetResizeOplog
使您可以动态调整操作日志的大小,而无需重新启动mongod
进程。
您必须对admin
数据库运行此命令。
该命令具有以下形式:
您只能replSetResizeOplog
在
mongod
通过Wired Tiger存储引擎运行的实例上使用
。
在MongoDB 3.4版及更早版本中,通过删除并重新创建local.oplog.rs
集合来调整操作日志的大小。在MongoDB 3.6版和更高版本中,使用该replSetResizeOplog
命令来调整操作日志的大小,如“ 更改操作日志的大小”教程中所示。从MongoDB 4.0开始,MongoDB禁止删除local.oplog.rs
集合。有关此限制的更多信息,请参见
Oplog收集行为。
更改给定副本集成员
replSetResizeOplog
的操作日志大小不会更改副本集中任何其他成员的操作日志大小。您必须replSetResizeOplog
在集群中的每个副本集成员上运行
,才能更改所有成员的操作日志大小。
减小OPLOG大小并不能自动收回磁盘空间。您必须compact
针对数据库中的
oplog.rs
集合运行local
。compact
阻止对其运行的数据库的所有操作。运行compact
针对oplog.rs
因此防止OPLOG同步。有关调整Oplog大小和压缩的过程
oplog.rs
,请参阅更改Oplog的大小。
在版本4.2.2中更改。
replSetResizeOplog
对进行排他(W)锁定,oplog
并阻止该集合上的其他操作,直到完成。replSetResizeOplog
使用全局排他(W)锁并阻止所有其他操作,直到完成为止。有关锁定MongoDB的更多信息,请参阅FAQ:并发。
使用stats
命令显示当前操作日志大小
maxSize
。例如:
上面的命令将返回该成员的操作日志大小:
maxSize
当前为9790804377字节,即9337兆字节。
以下命令将该成员的操作日志大小更改为17179869184字节,即16384兆字节。
要更改大小,请运行replSetResizeOplog
,将所需大小(以兆字节为单位)作为参数传递。
要验证新的操作日志大小,请重新运行stats
命令:
上面的命令返回:
警告
减小节点中oplog的大小会从其中删除数据。这可能导致与该节点同步的副本成员变得陈旧。要重新同步那些成员,请参阅重新同步副本集的成员。
[1] | 从MongoDB 4.0开始,操作日志可以超过其配置的大小限制,以避免删除。majority commit point |