我正在开发一个项目,我希望能够指定副本集的某些节点永远不能成为主节点,即如果出现故障导致所有主要节点都死亡,系统应该减少为读取 - 只有状态才会出现一些主要节点。这可能吗?如果有,怎么样?如果不是最好的方法是什么。
答案 0 :(得分:3)
这来自the documentation(强调我的):
priority
- 服务器可能选择的主要优先级。成为最高优先级的成员将成为主要成员。默认1.0。 优先级为零意味着服务器永远不能成为主要。
因此将优先级设置为零应该达到你想要的效果。
答案 1 :(得分:1)
据我所知,mongodb并非完全支持您所需要的内容。如果在没有主设备的情况下重新启动只读从设备,它将进入STARTUP2状态,而不是SECONDARY状态。尝试在STARTUP2中查询mongod实例将失败。
所以如果你有一个不可靠的设置,例如您在同一个城市的主控集群和只读服务器集群,并且断电,最终导致主DC降低(有人忘了检查发电机和UPS),只读服务器恢复正常(其他DC中的发电机工作正常)那么您将处于奴隶无法工作的情况。