在mongodb副本集中添加辅助实例时出错

时间:2015-04-20 11:41:04

标签: mongodb replicaset

我正在尝试部署mongodb副本集。我已经将我的mongodb实例作为副本的主要内容。现在我正在尝试添加另一个托管在不同iP地址的mongodb实例,作为副本的辅助,但是我收到以下错误:

    rs0:PRIMARY> rs.add("<ip address>:27017")
{
    "ok" : 0,
    "errmsg" : "Either all host names in a replica set configuration must be localhost references, or none must be; found 1 out of 2",
    "code" : 103
}

我做错了什么?

2 个答案:

答案 0 :(得分:8)

当我试图在同一台机器上运行两个mongod实例时,我遇到了这个问题。当我提供像

时,它会抛出错误
foreach($AllLinesArray1 as $key => $singleLine)

{
    $Line_textarea1 = $AllLinesArray1[$key];
    $Line_textarea2 = $AllLinesArray2[$key];
    $Line_textarea3 = $AllLinesArray3[$key];
    //your MySQL code
    $insert_query = "INSERT INTO tablename( FirstNo , SecondNo, ThirdNo ) VALUES ($Line_textarea1, $Line_textarea2, $Line_textarea3)";
}

其中 rs.add("localhost:27027") (or) rs.add("127.0.0.1:27027") 是次要的端口号。

<强>解决方案:

传递主机名而不是ip地址

27027

答案 1 :(得分:0)

新添加的副本集成员的IP地址是否解析为localhost?或者,您现有的成员是否已解析为localhost?无论哪种方式,副本集都不允许混合localhost / non-localhost配置。

查看此邮件的source code location

此外,Mongo guide on sharding说明了这一点:

  

如果使用“localhost”或127.0.0.1作为主机名部分   任何主机标识符,例如addShard或的主机参数   --configdb运行时选项的值,然后您必须使用   “localhost”或127.0.0.1用于任何MongoDB的所有主机设置   集群中的实例。如果混合使用localhost地址和远程地址   主机地址,MongoDB会出错。

同样适用于副本集。