在MongoDB中添加副本会引发错误

时间:2015-05-27 10:36:26

标签: mongodb replication database-replication

我尝试使用rs.add("developer-ViratualBox:30103")将节点添加到副本集,并且收到以下错误消息:

{
"ok" : 0,
"errmsg" : "Quorum check failed because not enough voting nodes responded; required 2 but only the following 1 voting nodes responded: developer-VirtualBox:30101; the following nodes did not respond affirmatively: developer-ViratualBox:30103 failed with Failed attempt to connect to developer-ViratualBox:30103; couldn't initialize connection to host developer-ViratualBox, address is invalid",
"code" : 74
}

该节点已在运行,我已使用mongo shell连接到该节点。可能是什么问题?

8 个答案:

答案 0 :(得分:3)

实际错误是couldn't initialize connection to host developer-ViratualBox, address is invalid,只是主节点无法与secondery节点连接。检查连接,防火墙,并检查与mongo shell的连接是否可以访问该端口。

答案 1 :(得分:1)

在启动辅助mongod进程时使用--replSet选项尝试从主mongod shell运行rs.add(“localhost:27002”)。

答案 2 :(得分:1)

创建rsconf文件时,请输入<localhost:port>而不是<hostname:port>。 然后是reconfig(rsconf)

示例:

rs0:PRIMARY>     
rsconf = {
             _id: "rs0",
             members: [
                 {
                     _id: 0,
                     host: "**localhost**:port for primary rs"
                 }]
         }

rs0:PRIMARY> rs.initiate(rsconf)
    {
        "info" : "try querying local.system.replset to see current configuration",
        "ok" : 0,
        "errmsg" : "already initialized",
        "code" : 23
    }

如果您遇到上述错误,请使用以下命令:

rs0:PRIMARY> rs.reconfig(rsconf)

添加辅助节点:rs.add(“localhost:辅助rs的端口”)

希望它能奏效。

答案 3 :(得分:0)

缺少的一点是我尝试添加的实例没有在定义的端口启动mongod实例。因此给定的连接参数不正确,这导致了通信问题。

答案 4 :(得分:0)

另一个可能的问题是,您尝试添加到副本集的计算机未配置为使用复制运行。 将此条目添加到您尝试添加并重新启动服务的计算机上的mongod.conf中,这对我有用:

replication:
  replSetName: evoReplicaSet

答案 5 :(得分:-1)

您只能在连接到主要时添加成员。要知道哪个成员是主要成员,请登录副本集的任何成员并发出db.isMaster()命令。

然后,使用rs.add()将新成员添加到副本集。例如,要在主机mongodb3.example.net上添加成员,请发出以下命令:

rs.add("developer-ViratualBox:30103")

答案 6 :(得分:-1)

也许您可以删除“本地”数据库以删除replSet的信息,然后为每台服务器重新启动mongod。

答案 7 :(得分:-2)

您应该使用docker network解决此问题。