1
我正在使用mongodb,它在javascript中是本機驅動程序。在MongoDB中動態更改節點副本集
通過指定哪些節點是在設置連接到replicaset:
var mainReplSet = new MongoDB.ReplSet([
new MongoDB.Server('0.0.0.0, 27017, { auto_reconnect: true }),
new MongoDB.Server('0.0.0.0', 27017, { auto_reconnect: true }),
new MongoDB.Server('0.0.0.0', 27017, { auto_reconnect: true })
], { rs_name:'ReplicaSetName', readPreference: MongoDB.ReadPreference.NEAREST });
所以,如果我動態節點添加到這個集合,我需要更新連接到副本集中的所有腳本。因此重新啓動它運行的任何服務器。無論如何要包含新節點而不必更新此腳本?
當你寫入數據庫時怎麼辦?對於寫入首選項,您可以指定數據在返回之前傳播到的節點數。這在mongo shell中的getLastErrorDefaults中設置,或者可以在腳本中設置。無論如何只是將「w」設置爲「全部」而不是「多數」?否則,我將不得不更新寫入數據庫的任何服務器的腳本。 –
沒有將w設置爲「全部」的選項。您可以通過設置w = X來實現這一點,其中X是數據節點副本的數量。然而,這遠非推薦的緩慢和風險(一些複製品處於非活動狀態)。您可以輕鬆設置一個寫入關注點,以確保使用[標記集]寫入所有或大部分數據中心(http://docs.mongodb.org/manual/tutorial/configure-replica-set-tag-sets/#replica -set配置標籤集) –