面试题答案
一键面试操作步骤
- 连接到MongoDB副本集:使用
mongo
命令行工具连接到副本集中的任意成员,例如:mongo --host <副本集成员主机名或IP>:<端口>
。 - 获取副本集状态:在
mongo
shell中,使用rs.status()
命令查看副本集的当前状态,确认要提升的Secondary成员的名称。 - 强制选举:在要提升为Primary的Secondary成员上执行
rs.stepDown()
命令,这会使当前Primary成员主动放弃Primary角色。如果当前Primary成员正常运行,该命令会使它在指定时间(默认为60秒)内放弃Primary角色,以便其他成员可以竞选成为Primary。然后,在要提升的Secondary成员上使用rs.elect()
命令发起选举,促使该成员成为Primary。
可能遇到的问题
- 网络问题:如果在执行
rs.stepDown()
和rs.elect()
期间网络不稳定,可能导致选举失败。比如网络延迟过高或短暂中断,会影响副本集成员之间的通信,使得无法正常完成选举流程。 - 成员状态异常:如果要提升的Secondary成员数据同步不完整,可能无法成功竞选成为Primary。副本集要求竞选Primary的成员必须拥有相对最新的数据,否则选举可能会被拒绝。
- 配置问题:如果副本集的配置文件中对成员角色或投票权有特殊限制,可能会导致无法将指定的Secondary成员提升为Primary。例如,某些成员可能被配置为无投票权成员,这类成员不能参与选举成为Primary。