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