![MongoDB进阶与实战:微服务整合、性能优化、架构管理](https://wfqqreader-1252317822.image.myqcloud.com/cover/697/38209697/b_38209697.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
5.6 小技巧——检查复制的延迟情况
由于分布式环境中的各种不确定性,因此对副本集的成员状态、复制延迟状态进行检查就变得非常重要。
1.rs.status命令
MongoDB对复制成员的监视可以使用rs.status命令,我们可以登录任一节点进行查询,代码如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_108_4.jpg?sign=1739035720-K9dNtTdRzHpXD0pSsoBAZAcxgbURT5DN-0-8129d74c2d05bd68a7486891fd5ba775)
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_109_1.jpg?sign=1739035720-9a6yZgpkn4LBfbC9j8OIJtbpQuSmupw7-0-344307e48555bbda07e1c271aa3058d1)
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_110_1.jpg?sign=1739035720-PYbw1xz6QNVltBp2b6VHC6Ebq8CG0EcI-0-6ad14ddc28c928f01bcd037eed8888d2)
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_111_1.jpg?sign=1739035720-11bjuNCyjgPAnwaZzmuEyNDOJTKSg3oo-0-42662846ccf8bd1da0b8b9efdd57ed0f)
members一列体现了所有副本集成员的状态,主要如下。
● health:成员是否健康,通过心跳进行检测。
● state/stateStr:成员的状态,PRIMARY表示主节点,而SECONDARY则表示备节点,如果节点出现故障,则可能出现一些其他的状态,例如RECOVERY。
● uptime:成员的启动时间。
● optime/optimeDate:成员最后一条同步oplog的时间。
● optimeDurable/optimeDurableDate:成员最后一条同步oplog(写入Journal日志)的时间。
● pingMs:成员与当前节点的ping时延。
● syncingTo:成员的同步来源。
2.查看复制延迟
如果希望查看当前节点oplog的情况,则可以使用rs.printReplicationInfo命令,代码如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_111_2.jpg?sign=1739035720-SnTPBQ1NJEizDBsfP4I4qBIMp6Z7Tl0b-0-3ff659eb33b2694ccf605886e3000eaa)
这里清晰地描述了oplog的大小、最早一条oplog以及最后一条oplog的产生时间,log length start to end所指的是一个复制窗口(时间差)。通常在oplog大小不变的情况下,业务写操作越频繁,复制窗口就会越短。
在节点上执行rs.printSlaveReplicationInfo命令,可以一并列出所有备节点成员的同步延迟情况,代码如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_111_3.jpg?sign=1739035720-PCItWngeUA0x1KukQzMFqPt3vgxXYePn-0-b3bae7b0c266b2ab817e552c0b092081)