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配置标签集) –