Redimensionar el oplog en línea (replSetResizeOplog)
MongoDBReplica SetComando
// 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()Qué hace
Hace crecer o reduce el oplog de un miembro en ejecución sin reinicio; minRetentionHours conserva las entradas del oplog durante un periodo mínimo aunque se supere el límite de tamaño.
Cuándo usarlo
Cuando la ventana del oplog no cubre la duración del mantenimiento o de la sincronización inicial, o los jobs de escritura masiva reducen la ventana.
Precaución
El comando solo afecta al miembro en el que se ejecuta y no se replica; aplíquelo en cada miembro. La ventana también debe ser suficiente en los miembros que actúan como sync sources. Reducirlo no devuelve el espacio en disco al SO de inmediato; para eso hace falta compact sobre oplog.rs. Con minRetentionHours el oplog puede crecer por encima de size según el volumen de escritura; planifique el disco en consecuencia.