javascript中的节点js / MongoDB副本集数组

时间:2013-10-29 18:21:35

标签: javascript node.js mongodb replication

警告:我是新手程序员(更多的是sysadmin)。我们得到了一个使用MongoDB的节点js应用程序。据我所知,mongo.js文件使用的是mongojs和monq java类。它只设置了一个MongoDB,我正在尝试设置一个新的HA环境来使用副本集。以下是他们提供的内容:

var mongojs = require('mongojs');
var monq = require('monq');
var dbName = 'exampledb';
var db = mongojs(dbName, ['collections']);
var client = monq('mongodb://127.0.0.1/exampledb', { w: 1 });

exports.db = db;
exports.ObjectId = mongojs.ObjectId;
exports.monqClient = client;

现在对于副本集,根据this article,我需要进行以下更改:

var db = mongojs('replset0.com, replset1.com, replset2.com/mydb?slaveOK=true?', ['collections']);

我不完全确定在此之后我需要做什么。我猜我必须创建一个数组,其中包含副本集的每个成员的主机名和端口号(设置为主要,辅助,仲裁),例如:

var replSet = new replSet();
var replSet[0] = "server0:port0"
var replSet[1] = "server1.:port1"
var replSet[2] = "server2.:port2"

我如何检测哪个节点是主节点?此外,如果主要失败,我将不得不重新启动节点js应用程序(永远使用)?

2 个答案:

答案 0 :(得分:5)

我找到了答案,因为它调用的是MongoDB的URI http://docs.mongodb.org/manual/reference/connection-string/

应该是这样的:

var client = monq('mongodb://server0:port0,server1:port1,server2:port2/[dbname]?replicaSet=[replicaSet Name]

答案 1 :(得分:1)

第一个问题:只要你给连接字符串中的所有成员,mongojs驱动程序应该能够找出哪个是主要成员。无需自己解决。

第二个问题:不,您不必重新启动节点应用。该集合中的其他成员将选出一个新的主要成员,尽管mongo需要时间来检测失败并进行选举。

有关详细信息,请参阅mongodb docs on replica sets