MST

星途 面试题库

面试题:MongoDB副本集成员健康检查基础方法

在MongoDB副本集中,如何使用命令行工具检查某个成员的健康状态?请描述常用的命令及其返回结果代表的含义。
15.3万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试
  1. 使用rs.status()命令
    • 命令:在MongoDB shell中,连接到副本集的任意成员,输入rs.status()
    • 返回结果含义
      • set:副本集名称。
      • date:运行此命令的时间。
      • myState:本地成员的状态。值为1表示该成员是主节点(Primary);值为2表示该成员是从节点(Secondary);其他值表示不同的状态,例如7表示仲裁节点(Arbiter)等。
      • members数组:包含副本集中每个成员的详细信息。
        • _id:成员的唯一标识符。
        • name:成员的主机名和端口号。
        • health:成员的健康状态。值为1表示健康,值为0表示不健康。
        • state:成员状态码,和myState类似,不同值代表不同状态。
        • stateStr:成员状态的字符串描述,例如“PRIMARY”“SECONDARY”“ARBITER”等。
        • uptime:成员已经运行的时间(秒)。
        • optime:成员的操作时间戳,反映成员与主节点数据的同步程度。
        • lastHeartbeat:该成员最后一次收到心跳的时间。
        • lastHeartbeatRecv:该成员最后一次接收心跳的时间。
  2. 使用rs.isMaster()命令
    • 命令:在MongoDB shell中,连接到副本集的任意成员,输入rs.isMaster()
    • 返回结果含义
      • ismaster:如果为true,表示当前连接的节点是主节点;如果为false,则不是主节点。
      • secondary:如果为true,表示当前连接的节点是从节点。
      • me:当前连接节点的标识。
      • hosts:副本集中所有成员的主机名和端口号数组。
      • setName:副本集名称。