使用node.js编写MongoDB副本

MongoDB replica set write with node.js

本文关键字:MongoDB 副本 编写 js node 使用      更新时间:2023-09-26

我使用mongodb本地驱动程序node.js连接到3个节点(PRIMARY和两个secondary)的副本集,如下所述:http://mongodb.github.io/node-mongodb-native/2.0/api/MongoClient.html

 var MongoClient = require("mongodb").MongoClient;     
 var url = "mongodb://admin:pass@hostname:27017";
 var options = {
  db: {
    readPreference: 'primaryPreferred',
    slaveOk: true
  },
  replSet: {
    replicaSet: 'rs0'
  },
  server: {
    w: 1,
    autoReconnect: true
  };
 MongoClient.connect(url, options);

注意,slaveOk: true没有记录,没有它,我一直得到slaveOk是假错误。写时总是得到Potentially unhandled rejection [83] MongoError: not master。你能帮忙从节点应用程序连接到副本集吗?也许我应该指定连接的所有服务器?但是在文档中说,驱动程序足够智能,当PRIMARY改变时重新连接。

为了允许客户端根据需要在复制集成员之间切换,您需要告诉它存在这些可选的复制集成员。为此,提供所有副本集成员的url,以逗号分隔。

var url = "mongodb://admin:pass@hostname1:27017,mongodb://admin:pass@hostname2:27017,mongodb://admin:pass@hostname3:27017,";

当您想要从应用程序中抽象出副本集配置以获得更大的灵活性时,您可以构建一个分片集群并让应用程序连接到路由器。路由器将负责将连接转发到合适的副本集成员