MongoDB进阶与实战:微服务整合、性能优化、架构管理
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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命令,可以一并列出所有备节点成员的同步延迟情况,代码如下: