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 ウィンドウ)、および各セカンダリがプライマリから何秒遅れているかを、同期ソースとともに表示する。

使用する場面

レプリケーション遅延のアラート時、計画メンテナンスの前にメンバーが停止していられる時間を算出する場合、および一括書き込みジョブの後に。

注意

メンバーが oplog ウィンドウより長く停止していると 'too stale' となり、初期同期が必要になる。一括更新 / 削除ジョブは数時間でウィンドウを縮める可能性があるため、ウィンドウはピーク負荷時の値で判断する。遅延の計算は optimeDate の差に基づく。プライマリが書き込みを受けていない場合、遅延は大きく見えないが、ウィンドウも縮まらない。

DBAtlas で開く →

関連項目