首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongoose:在ReplicaSet上阅读

Mongoose:在ReplicaSet上阅读
EN

Stack Overflow用户
提问于 2013-12-21 09:09:50
回答 6查看 13.7K关注 0票数 8

我有一个mongodb副本集,我想从主数据库和辅助数据库中读取数据。

我使用以下命令连接到数据库:

mongoose.connect('mongodb://user:password@54.230.1.1,user:password@54.230.1.2,user:password@54.230.1.3/PanPanDB?replicaSet=rs0&readPreference=nearest');

它不工作..。我的应用程序继续从主数据库读取。有什么建议吗?

EN

回答 6

Stack Overflow用户

发布于 2013-12-31 10:25:47

如果要从辅助数据库中读取数据,则应将read preference设置为以下任一项:

  • secondaryPreferred -在大多数情况下,操作从辅助成员读取,但如果没有辅助成员可用,则操作从primary.
  • secondary读取-所有操作从副本集的辅助成员读取。

根据您的示例,从nearest读取数据将根据ping时间(可以是主要的或次要的)选择最近的成员。

注意事项

在使用primary以外的任何读首选项时,您需要注意可能影响应用程序逻辑的最终一致性的潜在问题。例如,如果您从辅助服务器读取数据,则主服务器上可能存在尚未复制到该辅助服务器的更改。

如果您担心从次要文件读取时一致性更强,则应该查看Write Concern for Replica Sets文档。

由于从属服务器必须写入与主服务器相同的数据,因此从从属服务器读取数据可能不会提高性能,除非您的应用程序的读操作非常繁重,或者最终具有良好的一致性。

票数 8
EN

Stack Overflow用户

发布于 2014-05-17 23:42:32

按照MongoDB websiteMongoose web site上的文档,您可以添加以下说明,以在Mongoose上配置ReadPreference:

代码语言:javascript
复制
var opts = { replSet: {readPreference: 'ReadPreference.NEAREST'} };

mongoose.connect('mongodb://###:###@###:###/###', opts);

这已经使用Mongoose版本3.8.9进行了测试

票数 7
EN

Stack Overflow用户

发布于 2015-02-27 00:51:54

除了设置连接URI (如您所做的那样)和连接选项(如Emas所做的那样),我还必须显式地为每个查询选择服务器,例如

代码语言:javascript
复制
var query = User.find({}).read("nearest");
query.exec(function(err, users) {
    // ...
});
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20714340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档