2014-02-21 60 views
0

我在MongoDB中有3個成員replicaSet,當重新配置服務器實例的主機名時崩潰了。我不得不重新配置replicaSet,但我很好奇MongoDB如何處理所有成員中未同步的記錄。當你重新配置mongodb replicaset時,你會丟失記錄嗎?

案例1)我訪問MongoDB服務器時有一個新記錄來重新配置集合。
情況2)在另一個MongoDB服務器上有一個新記錄,該記錄稍後添加到副本集中。

回答

1

每個副本集有一個主節點和一個或多個輔助節點。

全部寫在小學上。然後,主要將這些更改發送給次級(更改列表被稱爲「oplog」)。這意味着主要人員始終是具有最新數據的成員。

當主服務器突然無法訪問時,副本集將進入只讀模式,併發生選舉以查找新的主服務器。通常會選擇最新的輔助資料(有關replica-set election的更多詳細信息)。任何不傳播給該次要的寫入都會丟失。

當舊的主節點恢復聯機時,它將副本集作爲輔助節點重新加入。其數據被同步到新的主要狀態。只有在舊主節點上發生的任何寫入都不會在崩潰前傳播到新主節點。

回滾的寫入備份爲BSON,目錄中的文件/rollback,並且可以重新添加到使用bsondumpmongorestore副本集。有關這一過程的詳細信息可以在文章Rollbacks During Replica Set Failover

+1

老寫不會丟失他們被分解斷成手動合併的文件中找到,otherwsie稱爲回滾方案 – Sammaye

+2

這可能是值得的參考會發生什麼[ **回滾**](http://docs.mongodb.org/manual/core/replica-set-rollbacks/)的情況。 –

+0

@NeilLunn heh的確如此 – Sammaye

相關問題