MST

星途 面试题库

面试题:MongoDB副本集成员重启相关操作

假设你有一个MongoDB副本集,其中一个成员需要重启,在重启过程中及重启后,你需要进行哪些步骤来确保副本集正常运行,并且数据不丢失?请详细描述操作流程。
31.7万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试
  1. 重启前
    • 确认要重启成员的角色,使用rs.status()命令查看副本集状态,确定该成员是主节点还是从节点。
    • 如果是主节点:
      • 使用rs.stepDown()命令让当前主节点主动退位,以便其他节点可以选举新的主节点。此操作会使当前主节点在一段时间内(默认30秒)不再参与主节点选举,确保在重启过程中不会干扰副本集的正常运行。
  2. 重启过程
    • 停止MongoDB服务,根据不同操作系统,使用相应命令,如在Linux系统中可能是sudo systemctl stop mongod
    • 重启服务器,这可能涉及到操作系统层面的重启操作,如sudo reboot
    • 启动MongoDB服务,如在Linux系统中使用sudo systemctl start mongod
  3. 重启后
    • 连接到副本集中的任意成员,使用mongo命令进入MongoDB shell。
    • 再次使用rs.status()命令查看副本集状态,确认重启后的成员已成功加入副本集,且副本集状态正常。
    • 如果重启前该成员是主节点,并且在重启后副本集已经选举出了新的主节点:
      • 等待一段时间,让数据同步完成,新主节点和重启的节点数据达到一致状态。可以通过观察rs.status()输出中的optimeDate字段,确保重启节点的时间与其他节点相近。
      • 在合适的时候(数据同步完成且业务允许),可以再次尝试让原主节点重新成为主节点,例如可以等待副本集相对空闲时,使用rs.stepDown()让当前主节点退位,然后原主节点可能再次被选举为主节点。