DBAtlas · 数据库运维图谱

测量 oplog 窗口和复制延迟

MongoDB副本集

命令

// 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',需要初始同步。批量更新/删除作业可能在数小时内使窗口缩小;应以高峰负载时的窗口值为准。延迟计算基于 optimeDate 差值;若 primary 没有写入,延迟看起来不高,但窗口也不会缩小。

在 DBAtlas 中打开 →

相关内容