- MongoDB进阶与实战:微服务整合、性能优化、架构管理
- 唐卓章
- 424字
- 2021-05-19 17:44:52
5.6 小技巧——检查复制的延迟情况
由于分布式环境中的各种不确定性,因此对副本集的成员状态、复制延迟状态进行检查就变得非常重要。
1.rs.status命令
MongoDB对复制成员的监视可以使用rs.status命令,我们可以登录任一节点进行查询,代码如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_108_4.jpg?sign=1739590589-PPqwfEpri8jIoChkNCZDcDTdPy6GWNMJ-0-4ba5fd6c37c36d29f57f9c0a45df3820)
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_109_1.jpg?sign=1739590589-6mhWxEvkEgZRlR3sBsoKdkBfpqvwGStp-0-4af8c6753189531cdab9818618e98222)
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_110_1.jpg?sign=1739590589-4KGQNyGTZIIohdz3ikN3VC9O2jp0vVtI-0-54778e20c358ea6ea12e084a38adb083)
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_111_1.jpg?sign=1739590589-CAqquWzmaHJJWoW4C6VjOQgkKBFdc6B4-0-21a0364ad2e351e862680822a685a14a)
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=1739590589-kkApFHTftJlmXUN9C7iaS1sVK4ydTdnu-0-2b0ca216008a5e8f2b348f77da6b4fd8)
这里清晰地描述了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=1739590589-fzBQ4xyQGBGUGxPxfKv21FCJ6EbrhSXF-0-17c8752d31433b8640cdcdb11855c363)