在线调整 oplog 大小(replSetResizeOplog)
MongoDB副本集命令
// Current oplog size (MB):
db.getSiblingDB("local").oplog.rs.stats().maxSize / 1024 / 1024
// Resize the oplog to 50 GB (in MB; run on each member separately, secondaries first):
db.adminCommand({ replSetResizeOplog: 1, size: 51200 })
// Minimum retention period (hours), independent of size:
db.adminCommand({ replSetResizeOplog: 1, minRetentionHours: 48 })
// Verify the result:
rs.printReplicationInfo()作用
无需重启即可扩大或缩小运行中成员的 oplog;minRetentionHours 使 oplog 条目即使超过大小上限也至少保留一段时间。
适用场景
oplog 窗口无法覆盖维护或初始同步所需时长,或批量写入作业使窗口缩小时。
注意
该命令只影响执行它的成员,不会被复制;需在每个成员上执行。充当同步源的成员上窗口也必须足够。缩小不会立即把磁盘空间归还给操作系统;为此需要对 oplog.rs 执行 compact。设置 minRetentionHours 后,oplog 可能随写入量超出 size;请相应规划磁盘。