DBAtlas · Атлас эксплуатации баз данных

Измерение окна oplog и отставания репликации

MongoDBReplica Set

Команда

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

Что делает

Показывает, на сколько часов записи хватает oplog (окно oplog) и на сколько секунд каждый secondary отстаёт от primary, вместе с его источником синхронизации.

Когда использовать

При оповещении об отставании репликации, перед плановым обслуживанием для расчёта того, сколько участник может быть недоступен, и после массовых заданий записи.

Внимание

Если участник недоступен дольше окна oplog, он становится 'too stale' и требует начальной синхронизации. Массовые задания update/delete могут сжать окно за несколько часов; оценивайте окно по его значению при пиковой нагрузке. Расчёт отставания основан на разнице optimeDate; если primary не получает записей, отставание не выглядит большим, но и окно не сокращается.

Открыть в DBAtlas →

Связанные материалы