DBAtlas · Atlas d'exploitation des bases de données

Mesurer la fenêtre de l'oplog et le retard de réplication

MongoDBReplica Set

Commande

// 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

Ce que fait la commande

Indique combien d'heures d'écritures l'oplog contient (fenêtre de l'oplog) et de combien de secondes chaque secondaire est en retard sur le primaire, avec sa source de synchronisation.

Quand l'utiliser

Sur une alerte de retard de réplication, avant une maintenance planifiée pour calculer combien de temps un membre peut rester arrêté, et après des jobs d'écriture massive.

Attention

Si un membre reste arrêté plus longtemps que la fenêtre de l'oplog, il devient 'too stale' et nécessite une synchronisation initiale. Les jobs d'update/delete massifs peuvent réduire la fenêtre en quelques heures ; évaluez la fenêtre d'après sa valeur en pic de charge. Le calcul du retard repose sur la différence d'optimeDate ; si le primaire ne reçoit aucune écriture, le retard ne paraît pas élevé mais la fenêtre ne se réduit pas non plus.

Ouvrir dans DBAtlas →

Voir aussi