Medir la ventana del oplog y el retraso de replicación
MongoDBReplica SetComando
// 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().timeDiffHoursQué 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.