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 ウィンドウがメンテナンスや初期同期の所要時間をカバーしない場合、または一括書き込みジョブがウィンドウを縮める場合。
注意
このコマンドは実行したメンバーにのみ影響し、レプリケートされないため、すべてのメンバーで適用する。同期ソースとして機能するメンバーでも、ウィンドウが十分である必要がある。縮小してもディスク領域はすぐには OS に返されない。そのためには oplog.rs に対する compact が必要。minRetentionHours を指定すると、書き込み量によって oplog が size を超えて増大することがあるため、それに応じてディスクを計画する。