2012-10-03 62 views
0

我有三個獨立的MongoDB數據庫服務器,每個服務器都有不同的數據,但是有相同的dbs和集合名稱。我已將它們轉換爲複製集,現在無論何時從主服務器讀取數據,我都只能從複製集初始化之前獲取特定服務器上的數據。這是預期的行爲?在能夠讀取所有三個數據庫中的數據之前,是否必須等待所有服務器同步?將三個獨立的mongodb服務器更改爲副本集?

回答

0

初始化副本集時,每個副本都會將數據從主數據庫中同步,以確保所有節點具有相同的數據副本 - 數據不存在「合併」。那些確實成爲輔助者的兩個節點將徹底清除並重新激活他們的數據。

請參閱http://docs.mongodb.org/manual/core/replication-internals/#syncing

如果來自兩個輔助數據的數據沒有備份到任何地方,您可能已經丟失了它。

+0

我在文檔中沒有看到任何表明數據已被清除的文檔,您確定嗎?我將嘗試刪除它並查看數據是否仍然存在。 –

+0

好的,所以我在輔助設置上設置了rs.slaveOk(),你說得對,數據不見了。這不是什麼大不了的事情,因爲這只是數據收集的一個開始,反正它也不是很有價值。謝謝 –

+0

不用擔心。將來,您應該確保在啓動副本集時數據目錄是乾淨的。然後,您可以對來自其他數據庫的現有數據執行mongodump和mongoimport以將其引入副本集。 – shelman