- MongoDB进阶与实战:微服务整合、性能优化、架构管理
- 唐卓章
- 424字
- 2025-02-17 22:21:55
5.6 小技巧——检查复制的延迟情况
由于分布式环境中的各种不确定性,因此对副本集的成员状态、复制延迟状态进行检查就变得非常重要。
1.rs.status命令
MongoDB对复制成员的监视可以使用rs.status命令,我们可以登录任一节点进行查询,代码如下:




members一列体现了所有副本集成员的状态,主要如下。
● health:成员是否健康,通过心跳进行检测。
● state/stateStr:成员的状态,PRIMARY表示主节点,而SECONDARY则表示备节点,如果节点出现故障,则可能出现一些其他的状态,例如RECOVERY。
● uptime:成员的启动时间。
● optime/optimeDate:成员最后一条同步oplog的时间。
● optimeDurable/optimeDurableDate:成员最后一条同步oplog(写入Journal日志)的时间。
● pingMs:成员与当前节点的ping时延。
● syncingTo:成员的同步来源。
2.查看复制延迟
如果希望查看当前节点oplog的情况,则可以使用rs.printReplicationInfo命令,代码如下:

这里清晰地描述了oplog的大小、最早一条oplog以及最后一条oplog的产生时间,log length start to end所指的是一个复制窗口(时间差)。通常在oplog大小不变的情况下,业务写操作越频繁,复制窗口就会越短。
在节点上执行rs.printSlaveReplicationInfo命令,可以一并列出所有备节点成员的同步延迟情况,代码如下:
