DBAtlas · 데이터베이스 운영 아틀라스

oplog window와 복제 지연 측정

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 window)와 각 secondary가 primary보다 몇 초 뒤처졌는지를 sync source와 함께 보여 준다.

사용 시점

복제 지연 알림 시, 계획된 유지보수 전 멤버가 얼마나 오래 다운될 수 있는지 계산할 때, 대량 쓰기 작업 후.

주의

멤버가 oplog window보다 오래 다운되면 'too stale' 상태가 되어 초기 동기화가 필요하다. 대량 update/delete 작업은 몇 시간 안에 window를 줄일 수 있으므로 피크 부하 시의 값으로 판단한다. 지연 계산은 optimeDate 차이를 기준으로 한다. primary에 쓰기가 없으면 지연이 높아 보이지 않지만 window도 줄지 않는다.

DBAtlas에서 열기 →

관련 항목