2010-10-29 130 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工作正常),那麼你將處於奴隸無法工作的情況。