2010-10-29 88 views
2

我正在开发一个项目,我希望能够指定副本集的某些节点永远不会成为主节点,即在发生故障的情况下,所有主要的有能力的节点都会死系统应该减少到只读状态,直到出现一些主节点。这可能吗?如果是的话如何?如果不是什么是最好的方式。mongodb中的次要节点副本集

回答

3

这是the documentation(重点煤矿):

priority - 优先级的服务器有潜在当选为主要。最高优先级的成员将成为主要成员。默认1.0。 零优先意味着服务器永远不可能是主要的

因此,将优先级设置为零应达到你想要的。

+0

谢谢!我跑了一些测试,这是正确的! – 2010-10-30 04:40:55

+0

我可以针对优先级零节点运行查询吗?如果是的话如何? – 2010-10-30 06:04:21

+0

@Ankur Chauhan:当然,只需连接到节点并查询即可。如果它给你一个“not master”错误,请调用rs.slaveOk()来允许从节点上的查询。 – 2010-10-30 16:15:33

1

从我可以告诉,mongodb不完全支持你所需要的东西。如果您在没有主设备时重新启动只读从设备,则它将进入STARTUP2状态,而不是SECONDARY。试图在STARTUP2中查询一个mongod实例将失败。

所以,如果你有一个不可靠的设置,例如你在同一个城市的主集群和只读服务器集群出现断电,最终导致主DC停电(有人忘了检查发电机& UPS)并且只读服务器恢复正常(发电机在其他DC工作正常),那么你将处于奴隶无法工作的情况。