Warning:MongoDB Replica Sets配置注意事項
sharding(1).png (10.49 KB, 下載次數(shù): 137)
下載附件
2012-02-22 19:22 上傳
我們知道,MongoDB不提供單機(jī)的數(shù)據(jù)安全性,取而代之的是提供了Replica Sets的高可用方案。官方文檔中提到的案例是三個節(jié)點組成的Replica Sets,這樣在其中任何一個節(jié)點宕機(jī)后都會自動選舉出新的Primary提供寫操作。而下面要提到的是一個大家可能忽略的問題。
配置方法
兩個節(jié)點的Replica Sets,啟動后一個選舉成為Primary,一個成為Secondary。
問題
這時候如果Secondary宕機(jī),那么Primary會怎么樣呢?Primary會立刻變成Secondary!這時候集群里沒有Primary了!為什么會出現(xiàn)這樣的情況呢。
原因
這是和MongoDB的Primary選舉策略有關(guān)的,試想如果情況不是Secondary宕機(jī),而是網(wǎng)絡(luò)斷開,那么兩個節(jié)點都會選取自己為Primary,因為他們能連接上的只有自己這一個節(jié)點。而這樣的情況在網(wǎng)絡(luò)恢復(fù)后就需要處理復(fù)雜的一致性問題。而且斷開的時間越長,時間越復(fù)雜。所以MongoDB選擇的策略是如果集群中只有自己一個節(jié)點,那么不選取自己為Primary。
解決方法
所以正確的做法應(yīng)該是添加兩個以上的節(jié)點,或者添加arbiter,當(dāng)然最好也最方便的做法是添加arbiter,aribiter節(jié)點只參與選舉,幾乎不會有壓力,所以你可以在各種閑置機(jī)器上啟動arbiter節(jié)點,這不僅會避免上面說到的無法選舉Primary的情況,更會讓選取更快速的進(jìn)行。(因為如果是三臺數(shù)據(jù)節(jié)點,一個節(jié)點宕機(jī),另外兩個節(jié)點很可能會各自選舉自己為Primary,從而導(dǎo)致很長時間才能得出選舉結(jié)果)
相關(guān)鏈接:tebros.com
|