面试题答案
一键面试计算复制延迟常用基础方法及原理
- 使用
rs.printSlaveReplicationInfo()
命令- 方法:在从节点上执行该命令,会输出一系列关于复制状态的信息,其中包含与延迟相关的数据。
- 原理:该命令获取从节点自身记录的与主节点同步状态的数据,通过对比从节点应用 oplog(操作日志)的时间戳和主节点 oplog 最新时间戳,计算出两者的时间差,这个时间差就反映了复制延迟。
- 检查 oplog 时间戳
- 方法:分别在主节点和从节点查询 oplog 集合,获取最新操作的时间戳。在主节点通过
db.getSiblingDB("local").oplog.rs.find().sort({$natural: -1}).limit(1)
获取主节点最新 oplog 时间戳,在从节点类似操作获取从节点最新 oplog 时间戳,然后计算两者差值。 - 原理:主节点每次写操作会记录到 oplog 并带有时间戳,从节点通过复制主节点的 oplog 来同步数据。对比主从节点 oplog 最新时间戳,可知道从节点落后主节点多久,差值即为复制延迟。
- 方法:分别在主节点和从节点查询 oplog 集合,获取最新操作的时间戳。在主节点通过