当我使用复制(选项)运行 MongoDB 时,我似乎会发生此错误replSet
,并且由于某种原因没有可用的主服务器。
例如,在重新启动主节点后,选择新的主节点似乎需要一段时间,除了辅助节点之外什么都没有。
您说您没有运行复制,而是处于“独立”模式......在这种情况下,我看到的其他问题建议确保您运行的是最新的 MongoDB 和 PHP 驱动程序版本(来自 Ubuntu 10gen apt-get 源)。还要仔细检查您是否可以从PHP所在的同一台服务器访问 mongo,以防出现防火墙问题:mongo mongohost1.server.com:27107 -uUSERNAME -pPASSWORD
MongoClient()
查看您传递给PHP 驱动程序的连接字符串会很有帮助。如果您不使用复制,它将看起来像这样:
mongodb://USERNAME:PASSWORD@localhost:27017
如果您使用复制,将看起来像这样:
mongodb://USERNAME:PASSWORD@host1.server.com:27017,host2.server.com:27017,host3.server.com:27017/?replicaSet=my_replica_set
如果您使用复制,请确保将 Primary Mongodb 服务器指定为服务器之一(驱动程序应检测哪个是 Primary,并检测 Primary 是否更改)。
如果一切设置正确,请仔细检查您是否确实有一个 Primary。可能有问题,导致 MongoDB 不选择主节点。您可以登录到 Mongo 命令行/控制台应用程序并运行它来检查所有副本集成员的状态:
rs.status()
我正在运行 PHP 5.3、MongoDB 2.4.8、MongoDB PHP 驱动程序 1.4.5、Ubuntu 12.04。
(我认为这篇旧帖子以某种方式得到了解决,但我刚刚发现自己在这里遇到了类似的问题,所以我想我可能会提供一个答案来帮助人们将来解决他们的问题。