Medir a janela do oplog e o lag de replicação
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().timeDiffHoursO que faz
Mostra quantas horas de escritas o oplog comporta (janela do oplog) e quantos segundos cada secundário está atrás do primário, junto com sua sync source.
Quando usar
Em um alerta de lag de replicação, antes de uma manutenção planejada para calcular quanto tempo um membro pode ficar fora do ar e após jobs de escrita em massa.
Atenção
Se um membro ficar fora do ar por mais tempo que a janela do oplog, ele fica 'too stale' e precisa de um initial sync. Jobs de update/delete em massa podem encolher a janela em poucas horas; avalie a janela pelo seu valor no pico de carga. O cálculo do lag se baseia na diferença de optimeDate; se o primário não recebe escritas, o lag não parece alto, mas a janela também não encolhe.