2014-11-24 31 views
0

有沒有辦法讓一個副本集的次要成員被動,而不會降低臨時斷開所有客戶端的副本集?我之所以問,是因爲我們從輔助副本集成員進行備份,所以在備份運行時,我不希望這個成員可能成爲主要成員,因此我有一個腳本來改變這個優先級成員爲零,我們稱之爲rs.reconfig()。不幸的是,這會導致臨時中斷,直到客戶端重新連接。一旦備份完成,我改變成員的優先級並再次調用rs.reconfig()。有沒有另一種方式做到這一點,而不會造成任何中斷?MongoDB - 使副本集成員被動無需斷開客戶端?

謝謝, Richard。

+0

你是如何備份你的中學?使用文件系統快照,mongodump,..? – Stennie 2014-11-24 12:09:56

+0

是否有沒有從第一個地方創建備份的原因? – 2014-11-24 12:12:58

回答

1

不是重新配置副本集,而是在運行備份的輔助節點上運行rs.freeze(...)。凍結的中學將不具備在指定期間成爲初級教師的資格。

備份完成後,您可以在輔助節點上運行rs.freeze(0)以解凍它。

注意事項需要考慮:

  • 您應該確保有在設定,以確保故障轉移副本足夠的數據承載節點仍然是可能的備份運行時。例如,如果您有一個帶有主/輔助/仲裁器的三節點副本集,則凍結輔助節點將會很危險,除非您確實希望發生停機而不是故障切換(以及中斷的備份)。

  • 您應該提供rs.freeze()的秒數,該秒數比預期的備份時間段長(但不會過多),因此,如果備份過程沒有執行,輔助節點不會意外終止凍結正確完成或解凍二級。

  • 根據您當前的備份策略,這可能是不必要的。例如,如果您使用的是filesystem snapshots,則該過程應該很快完成。

+0

非常好! rs.freeze()命令看起來正是我所需要的。非常感謝! – RichardK9 2014-11-24 12:34:41