javascript - 动态更改 MongoDB ReplicaSet 中的 Node

标签 javascript node.js mongodb

我正在使用 mongodb 及其 JavaScript 中的 native 驱动程序。

您可以通过指定集合中的 Node 来连接到副本集:

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 } );

因此,如果我向此集合动态添加 Node ,我需要更新连接到副本集的所有脚本。因此,重新启动它正在运行的任何服务器。是否有办法在不更新此脚本的情况下包含新 Node ?

最佳答案

您不必在添加(和有条件删除)成员时更新脚本。您需要的是提供种子列表。基本上你可以提供一个,但是不建议这样做,因为到时候可能会宕机。

即使副本集中有更多成员,仲裁服务器也应该足够。因此,对于您的三个成员集,两台服务器就足够了。

每个成员都拥有自己的集合配置对象副本,并且知道谁是主控者。甚至不需要在种子列表中指定 master。

Have a look here

关于javascript - 动态更改 MongoDB ReplicaSet 中的 Node ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18966543/

相关文章:

javascript - 在 promise 解析时调用私有(private)函数的单元测试模块

Javascript 多维数组

mongodb - 防止 Lithium/mongoDB 中的表单操作

javascript - 仅调用多个 select 元素的最后附加的 onchange 函数

javascript - 如何用更少的行数快速制作多个嵌套属性对象?

mongodb - monorestore 问题 BadValue : object to insert exceeds cappedMaxSize

javascript - firebase.auth() - 语法错误 "unexpected token ."

javascript - 如何在已经运行的Electron应用程序中通过 “open with”打开文件?

javascript - 在同一个异步函数/定时器重置中使用多个setTimeout

node.js - 使用 MERN 堆栈构建相对路径的最合适方法是什么?