DBAtlas · Atlas de operaciones de bases de datos

Medir la ventana del oplog y el retraso de replicación

MongoDBReplica Set

Comando

// Oplog size and the time span it covers (oplog window):
rs.printReplicationInfo()
// Lag of each secondary relative to the primary:
rs.printSecondaryReplicationInfo()
// Lag in seconds and sync source, for monitoring/scripts:
const s = rs.status(); const p = s.members.find(m => m.stateStr === "PRIMARY");
s.members.filter(m => m.stateStr === "SECONDARY").map(m => ({ host: m.name, lagSec: (p.optimeDate - m.optimeDate) / 1000, syncSource: m.syncSourceHost }))
// Window (hours):
db.getReplicationInfo().timeDiffHours

Qué hace

Muestra cuántas horas de escrituras contiene el oplog (ventana del oplog) y cuántos segundos va retrasado cada secundario respecto al primario, junto con su sync source.

Cuándo usarlo

Ante una alerta de retraso de replicación, antes de un mantenimiento planificado para calcular cuánto tiempo puede estar caído un miembro y tras jobs de escritura masiva.

Precaución

Si un miembro está caído más tiempo que la ventana del oplog, pasa a 'too stale' y necesita una sincronización inicial. Los jobs masivos de update/delete pueden reducir la ventana en cuestión de horas; juzgue la ventana por su valor con la carga pico. El cálculo del retraso se basa en la diferencia de optimeDate; si el primario no recibe escrituras, el retraso no parece alto, pero la ventana tampoco se reduce.

Abrir en DBAtlas →

Relacionado