Meteor 1.4.1.1上副本集的正确MONGO_URL设置是什么

时间:2016-09-04 08:51:12

标签: mongodb meteor heroku mongodb-replica-set

今天早上我将更新的Meteor项目部署到Heroku上。

我正在从1.1.0.3升级到1.4.1.1

正确使用Meteor Buildpack Horse所有内容,但应用程序错误输出错误;

  

MongoError:种子列表不包含mongos代理,replicaset连接需要在URI或options对象中提供参数replicaSet,mongodb:// server:port / db?replicaSet = name

我的MONGO_URLmongodb://u:p@url1:port,url2:port/db所以我将其更改为;

mongodb://u:p@url1:port,url2:port/db?replicaSet=set-name

如果我使用replicaSet参数出错,我会收到此错误;

  

MongoError:在replicaset中找不到主要内容

这似乎是明智的,因为复制项不存在,但是当我输入正确的值时,我再次得到原始错误,说种子列表不包含代理。

我的副本集名称中有一个破折号,我不知道这是否相关。

我尝试了什么

我尝试使用在Mongo客户端中抛出此错误的URL,它允许我连接到实例,所以我知道所有细节都是正确的。

我也尝试转义replicaSet,因此?replicaSet=set\-name这给了我MongoError: no primary found in replicaset错误。

我的MongoDB提供商有一张开放票,但我怀疑这是Meteor / me问题!

1 个答案:

答案 0 :(得分:6)

Meteor v1.4使用新版本的MongoDB驱动程序。

虽然MONGO_URL环境变量的格式正确,但错误是由MONGO_OPLOG_URL引起的,应修改该值以包含replicaSet参数。

有关详细信息和以下注释(有关Compose.io),请参阅this GitHub issue

来自oplog driver documentation

  

使用meteor run在开发模式下自动启用Oplog拖尾,并且可以使用MONGO_OPLOG_URL环境变量在生产中启用。

     

(...)

     

要在生产Meteor应用程序中使用oplog拖尾,必须将MongoDB服务器配置为replica set;单个 - mongod数据库没有oplog。您的群集可能不使用Mongo分片。

migration guide

  

从1.4开始,您必须确保MONGO_OPLOG_URL包含replicaSet参数(请参阅the changelogthe oplog documentation)。

     
    

注意:某些MongoDB主机提供程序可能具有不要求您使用replicaSet参数的部署设置。例如,Compose.io有两种类型的部署,MongoDB Classic和MongoDB +。新的MongoDB +产品是分片设置,而不是真正的副本集(尽管分片被实现为副本集),因此它不需要replicaSet参数,如果将Meteor添加到连接中,Meteor将抛出错误字符串。