警告
在MongoDB 3.4版及更早版本中,通过删除并重新创建local.oplog.rs
集合来调整操作日志的大小。
在MongoDB 3.6版和更高版本中,使用该
replSetResizeOplog
命令来调整操作日志的大小,如本教程所示。
从MongoDB 4.0开始,MongoDB禁止删除
local.oplog.rs
集合。有关此限制的更多信息,请参见Oplog收集行为。
此过程使用命令更改副本集每个成员上oplog [1]的大小replSetResizeOplog
,从次要成员开始,然后再进行
主要操作。
首先对每个辅助副本集成员 执行这些步骤。更改所有辅助成员的操作日志大小后,请在主要成员上执行以下步骤。
使用mongo
外壳连接到副本集成员:
注意
如果副本集强制执行身份验证,则您必须以具有修改local
数据库权限的用户身份进行身份验证
,例如clusterManager
或
clusterAdmin
角色。
要查看操作日志的当前大小,请切换到local
数据库并db.collection.stats()
针对该
oplog.rs
集合运行。stats()
将操作日志大小显示为maxSize
。
该maxSize
字段显示收集大小(以字节为单位)。
要调整操作日志的大小,请运行replSetResizeOplog
命令,以兆字节为单位传递所需大小作为size
参数。指定的大小必须大于990
或990兆字节。
以下操作将副本集成员的操作日志大小更改为16 GB或16000兆字节。
[1] | 从MongoDB 4.0开始,操作日志可以超过其配置的大小限制,以避免删除。majority commit point |
oplog.rs
以回收磁盘空间¶减小操作日志的大小不会自动回收分配给原始操作日志大小的磁盘空间。您必须compact
针对数据库中的oplog.rs
集合
运行
local
以回收磁盘空间。增加oplog大小后compact
,在oplog.rs
集合上运行没有任何好处。
重要
compact
正在进行操作时,副本集成员无法复制操作日志条目
。虽然compact
运行,会员可以远远落后主要在于它不能恢复复制下跌。成员在compact
过程中变得“陈旧”的可能性随群集写入吞吐量的增加而增加,并且可能因oplog大小的减小而进一步加剧。
考虑安排一个维护时段,在此期间限制写操作或停止写操作,以减轻成员“陈旧”并需要完全重新同步的风险。
不要不运行compact
针对主副本集成员。将mongo
Shell直接连接到主服务器(而不是副本集)并运行rs.stepDown()
。如果成功,则主要人员退出。在mongo
外壳上,compact
在第二个成员上运行命令。
以下操作compact
对oplog.rs
集合运行命令
:
对于执行身份验证的集群,请compact
对local
数据库和oplog.rs
集合执行特权操作,以用户身份进行身份验证。有关compact
认证要求的完整文档,请参阅紧凑的“必需的特权”。