当前位置: 首页 > article >正文

MongoDB延迟查询

在 MongoDB 中,查看副本集成员之间的副本延迟可以通过以下步骤进行:

  1. 使用 rs.status() 命令
    这个命令提供了副本集的详细状态信息,包括每个成员的延迟情况。在 MongoDB shell 中,你可以执行以下命令:

    rs.status()
    

    这个命令会返回一个包含副本集所有成员状态的对象。在返回的对象中,每个成员都有一个 optime 字段,显示了该成员最后应用的操作的时间戳。

  2. 查看 optime 字段
    optime 字段是一个包含两个部分的对象:ts(timestamp)和 t(term)。ts 是一个 Timestamp 对象,表示最后应用的操作的时间。

  3. 比较主节点和从节点的 optime
    主节点的 optime 应该总是最新的,而从节点的 optime 可能会有所延迟。你可以通过比较主节点和从节点的 optime 来估计延迟。

  4. 使用 rs.printReplicationInfo() 命令
    这个命令提供了一个更易于阅读的副本集状态报告,包括每个成员的延迟信息。在 MongoDB shell 中,执行以下命令:

    rs.printReplicationInfo()
    

    这个命令会打印出副本集的状态信息,包括每个成员的延迟。

  5. 监控延迟
    如果你想要持续监控副本集的延迟,你可以定期运行这些命令,或者使用 MongoDB 的监控工具,如 MongoDB Cloud Manager 或第三方监控解决方案。

请注意,副本延迟可能会因为网络延迟、磁盘 I/O、CPU 使用率等因素而变化。如果你发现延迟异常高,可能需要检查副本集成员的性能和配置。

mongo-baa26600-replica0:SECONDARY> rs.printReplicationInfo()
configured oplog size:   10240MB
log length start to end: 370018secs (102.78hrs)
oplog first event time:  Fri Sep 06 2024 10:54:09 GMT+0800 (CST)
oplog last event time:   Tue Sep 10 2024 17:41:07 GMT+0800 (CST)
now:                     Tue Sep 10 2024 17:41:14 GMT+0800 (CST)
mongo-baa26600-replica0:SECONDARY> rs.status()
{
        "set" : "mongo-baa26600-replica0",
        "date" : ISODate("2024-09-10T09:42:31.340Z"),
        "myState" : 2,
        "term" : NumberLong(162),
        "syncSourceHost" : "10.10.98.127:3692",
        "syncSourceId" : 2,
        "heartbeatIntervalMillis" : NumberLong(2000),
        "majorityVoteCount" : 2,
        "writeMajorityCount" : 2,
        "votingMembersCount" : 3,
        "writableVotingMembersCount" : 3,
        "optimes" : {
                "lastCommittedOpTime" : {
                        "ts" : Timestamp(1725961346, 1),
                        "t" : NumberLong(162)
                },
                "lastCommittedWallTime" : ISODate("2024-09-10T09:42:26.430Z"),
                "readConcernMajorityOpTime" : {
                        "ts" : Timestamp(1725961346, 1),
                        "t" : NumberLong(162)
                },
                "readConcernMajorityWallTime" : ISODate("2024-09-10T09:42:26.430Z"),
                "appliedOpTime" : {
                        "ts" : Timestamp(1725961346, 1),
                        "t" : NumberLong(162)
                },
                "durableOpTime" : {
                        "ts" : Timestamp(1725961346, 1),
                        "t" : NumberLong(162)
                },
                "lastAppliedWallTime" : ISODate("2024-09-10T09:42:26.430Z"),
                "lastDurableWallTime" : ISODate("2024-09-10T09:42:26.430Z")
        },
        "electionParticipantMetrics" : {
                "votedForCandidate" : true,
                "electionTerm" : NumberLong(162),
                "lastVoteDate" : ISODate("2024-09-10T08:55:47.309Z"),
                "electionCandidateMemberId" : 2,
                "voteReason" : "",
                "lastAppliedOpTimeAtElection" : {
                        "ts" : Timestamp(1725958536, 1),
                        "t" : NumberLong(161)
                },
                "maxAppliedOpTimeInSet" : {
                        "ts" : Timestamp(1725958536, 1),
                        "t" : NumberLong(161)
                },
                "priorityAtElection" : 1,
                "newTermStartDate" : ISODate("2024-09-10T08:55:47.311Z"),
                "newTermAppliedDate" : ISODate("2024-09-10T08:55:48.546Z")
        },
        "members" : [
                {
                        "_id" : 0,
                        "name" : "10.10.98.123:7315",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 4539,
                        "optime" : {
                                "ts" : Timestamp(1725961346, 1),
                                "t" : NumberLong(162)
                        },
                        "optimeDurable" : {
                                "ts" : Timestamp(1725961346, 1),
                                "t" : NumberLong(162)
                        },
                        "optimeDate" : ISODate("2024-09-10T09:42:26Z"),
                        "optimeDurableDate" : ISODate("2024-09-10T09:42:26Z"),
                        "lastHeartbeat" : ISODate("2024-09-10T09:42:30.831Z"),
                        "lastHeartbeatRecv" : ISODate("2024-09-10T09:42:30.318Z"),
                        "pingMs" : NumberLong(0),
                        "lastHeartbeatMessage" : "",
                        "syncSourceHost" : "10.10.98.127:3692",
                        "syncSourceId" : 2,
                        "infoMessage" : "",
                        "configVersion" : 111017,
                        "configTerm" : -1
                },
                {
                        "_id" : 1,
                        "name" : "10.10.98.125:4933",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 86381,
                        "optime" : {
                                "ts" : Timestamp(1725961346, 1),
                                "t" : NumberLong(162)
                        },
                        "optimeDate" : ISODate("2024-09-10T09:42:26Z"),
                        "syncSourceHost" : "10.10.98.127:3692",
                        "syncSourceId" : 2,
                        "infoMessage" : "",
                        "configVersion" : 111017,
                        "configTerm" : -1,
                        "self" : true,
                        "lastHeartbeatMessage" : ""
                },
                {
                        "_id" : 2,
                        "name" : "10.10.98.127:3692",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 86378,
                        "optime" : {
                                "ts" : Timestamp(1725961346, 1),
                                "t" : NumberLong(162)
                        },
                        "optimeDurable" : {
                                "ts" : Timestamp(1725961346, 1),
                                "t" : NumberLong(162)
                        },
                        "optimeDate" : ISODate("2024-09-10T09:42:26Z"),
                        "optimeDurableDate" : ISODate("2024-09-10T09:42:26Z"),
                        "lastHeartbeat" : ISODate("2024-09-10T09:42:30.830Z"),
                        "lastHeartbeatRecv" : ISODate("2024-09-10T09:42:31.332Z"),
                        "pingMs" : NumberLong(0),
                        "lastHeartbeatMessage" : "",
                        "syncSourceHost" : "",
                        "syncSourceId" : -1,
                        "infoMessage" : "",
                        "electionTime" : Timestamp(1725958547, 1),
                        "electionDate" : ISODate("2024-09-10T08:55:47Z"),
                        "configVersion" : 111017,
                        "configTerm" : -1
                }
        ],
        "ok" : 1,
        "$clusterTime" : {
                "clusterTime" : Timestamp(1725961346, 1),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        },
        "operationTime" : Timestamp(1725961346, 1)
}

根据提供的 rs.printReplicationInfo()rs.status() 命令的输出,我们可以分析 MongoDB 副本集的当前状态和副本延迟情况。

  1. 副本集状态

    • rs.status() 命令显示副本集的名称为 mongo-baa26600-replica0
    • 当前实例的状态 (myState) 为 2,表示这是一个从节点(SECONDARY)。
    • 同步源主机 (syncSourceHost) 是 10.10.98.127:3692,这是当前从节点用来同步数据的主节点。
  2. 副本延迟

    • oplog 的大小配置为 10240MB,这为日志记录提供了较大的空间。
    • oplog 的日志长度从开始到结束为 370018 秒,大约 102.78 小时。
    • oplog 的第一个事件时间是 Fri Sep 06 2024 10:54:09 GMT+0800 (CST),最后一个事件时间是 Tue Sep 10 2024 17:41:07 GMT+0800 (CST)
    • 当前时间是 Tue Sep 10 2024 17:41:14 GMT+0800 (CST)
  3. 成员状态

    • 有三个成员,其中 10.10.98.127:3692 是主节点(PRIMARY),状态为 1
    • 其他两个成员(10.10.98.123:731510.10.98.125:4933)都是从节点(SECONDARY),状态为 2
    • 所有成员的 optime(最后应用的操作时间)都是 Timestamp(1725961346, 1),这表明所有成员都同步到了相同的操作时间戳。
  4. 副本延迟分析

    • rs.status() 的输出中,我们可以看到所有成员的 appliedOpTime(已应用的操作时间)都是相同的,这意味着没有副本延迟,或者延迟非常小,可以忽略不计。
    • 如果从节点的 appliedOpTime 落后于主节点的 optime,那么差值就是副本延迟。
  5. 选举信息

    • 最近一次选举发生在 ISODate("2024-09-10T08:55:47.309Z"),选举时使用的 optimeTimestamp(1725958536, 1)
  6. 健康和连接状态

    • 所有成员的 health 都是 1,表示它们都是健康的。
    • lastHeartbeatlastHeartbeatRecv 时间戳显示了最近一次心跳的时间,这有助于确认副本集成员之间的通信是正常的。

总结来说,根据这些信息,副本集看起来是健康的,所有成员都同步到了相同的操作时间戳,没有显著的副本延迟。这是一个正常运行的副本集的迹象。如果需要进一步的延迟监控,可以考虑使用更详细的监控工具或定期检查这些指标。


http://www.kler.cn/a/301518.html

相关文章:

  • 微信小程序之路由跳转传数据及接收
  • Http常⻅见请求/响应头content-type内容类型讲解(笔记)
  • React Native 全栈开发实战班 -原生功能集成之相机与图片
  • XXL-JOB相关面试题
  • LeetCode 445.两数相加 II
  • 【windows】05-windows系统级深度隐藏文件方法
  • chapter14-集合——(List-Map)——day18
  • ctfshow-文件包含
  • JavaEE:多线程进阶(线程安全的集合类)
  • Python实现Paillier同态加密算法
  • JavaWeb开发中为什么Controller里面的方法是@RequestMapping?
  • 张力控制器的原理
  • 【2023年】云计算金砖牛刀小试3
  • 《C++枚举类型的进化:从传统到现代的飞跃》
  • SAP B1 学习笔记 - 易混淆字段名(持续更新中)
  • 【c/c++】类型转换:隐式类型转换、强制类型转换
  • Vue - 关于Router路由跳转时显示的animate.css动画
  • ffmpeg使用安装使用教程(命令行-Python)
  • 后端Web之SpringBoot原理
  • Ubuntu 22.04 系统中 ROS2安装
  • 复仇时刻 华为的狙击还没结束
  • JAVA 使用POI实现单元格行合并生成
  • Spring Boot 四大请求编码模板(GET、POST、PUT、DELETE)
  • eureka服务开启之后的默认登录账号密码是什么?
  • SpringBoot项目部署+属性配置方式+多环境开发
  • 爬虫2:web请求与http