当前位置: 首页 > 知识库问答 >
问题:

尝试连接到Mongo中的副本集时出错

吕扬
2023-03-14

当我尝试连接到AWS中设置的mongo副本时,我收到这个错误:

slavenode: 27017:[Errno-2]名称或服务未知,ip-XXX-XX-XX-XX: 27017:[Errno-2]名称或服务未知

(其中XXX-XX...对应我的实际IP地址)

要连接的代码如下所示:

client = MongoClient("mongodb://Master-PublicIP:27017,Slave-PublicIP:27017/myFirstDB?replicaSet=rs0")
db = client.myFirstDB
try:
    db.command("serverStatus")
except Exception as e:
    print(e)
else:
    print("You are connected!")
client.close()

(其中,在主PublicIP和从PublicIP中,我从AWS控制台获得了实际的IPv4公共IP)

我已经有一个副本集,配置是:

rs0:主要

{
"_id" : "rs0",
"version" : 2,
"members" : [
    {
        "_id" : 0,
        "host" : "ip-XXX-XX-XX-XXX:27017",
        "arbiterOnly" : false,
        "buildIndexes" : true,
        "hidden" : false,
        "priority" : 1,
        "tags" : {

        },
        "slaveDelay" : 0,
        "votes" : 1
    },
    {
        "_id" : 1,
        "host" : "SlaveNode:27017",
        "arbiterOnly" : false,
        "buildIndexes" : true,
        "hidden" : false,
        "priority" : 1,
        "tags" : {

        },
        "slaveDelay" : 0,
        "votes" : 1
    }
],
"settings" : {
    "chainingAllowed" : true,
    "heartbeatTimeoutSecs" : 10,
    "getLastErrorModes" : {

    },
    "getLastErrorDefaults" : {
        "w" : 1,
        "wtimeout" : 0
    }
}

}

我已经在主数据库中创建了/data/db,在次数据库中创建了/data/db1,并且我已经对sudo chmod-R 755/data/db赋予了适当的所有权

我的MongoDB版本是3.0.15。有人知道出了什么问题吗?

提前感谢。

共有2个答案

仰城
2023-03-14

我设法解决了这个问题。正如@N3i1在评论中建议的那样,我使用公共DNS(IPv4)。我在 /etc/hosts.中声明的主机存在问题

在这个文件中,我用一些名称定义了主/从IP。由于某种原因,这不起作用。我删除它们,然后重新配置副本集配置。

在Mongo shell的PRIMARY中,我做到了:

cfg = {"_id" : "rs0", "members" : [{"_id" : 0,"host" : "Public DNS (IPv4):27017"},{"_id" : 1,"host" : "Public DNS (IPv4):27017"}]}
rs.reconfig(cfg,{force: true});

然后,我使用python连接副本集:

MongoClient("mongodb://Public DNS (IPv4):27017,Public DNS (IPv4):27017/?replicaSet=rs0")

当然,更改您的公共DNS(IPv4)地址。

辛成周
2023-03-14

您是否尝试过从MongoClient()中删除myFirstDB

 MongoClient("mongodb://Master-PublicIP:27017,Slave-PublicIP:27017/?replicaSet=rs0")

因为下一行指定了要使用的db

db = client.myFirstDB

或者我认为您可以通过在MongoClient()的结束括号之后放置dot来指定db

MongoClient("mongodb://Master-PublicIP:27017,Slave-PublicIP:27017/?replicaSet=rs0").myFirstDB
 类似资料:
  • mongo admin--主机mongo1.xxxx.com--ssl--sslpemkeyfile mongoclient.pem--sslcafile mongoca.crt 不起作用 我从Mongo这边得到了这个错误: 我做错了什么?

  • 我是php服务器端和mysql的新手,有了一些基本的知识,最近安装wamp服务器和一些php文件和数据库创建,我正在尝试将我的android应用程序连接到运行mysql数据库的本地主机(就像一些webservice一样)。 因此,在浏览器中,我在url地址空间中键入,它将显示wampserver主页 但当我键入时,它显示了某个错误页面,我将附加错误页面的屏幕截图 这是屏幕 因此任何人都可以告诉我为

  • 我在Maven中使用SpringREST和Mongo来创建一个连接到服务器的web服务。问题是我还没有为Mongo编写任何代码,它试图连接到localhost,这给我带来了一个MongoSocketOpenException。我所写的唯一代码是从main开始的两行代码。这是stacktrace: 这是我的pom.xml 最后,我必须声明,尽管存在异常,但程序运行良好 提前感谢!

  • 我是新来的,对Mysql和Python非常陌生。我对这个insert语句有一个问题: 错误是: 使用以下语句创建表: 我花了一整天的时间想弄清楚这件事。谁能给我一个指针吗?

  • 我只是补充道: 我的maven春装项目。我也有这个测试: 出于某种原因,当我使用 spring boot构建我的项目时,现在尝试连接到mongodb: 如果我只是删除测试或mongo依赖项,上面的mongo连接就不会启动。 但是在上面的测试中没有提到mongo,那么spring为什么要尝试启动一个mongo连接呢?

  • 我正在尝试运行以下Sqoop命令: 然而,我得到了这个错误: 17/02/04 00:04:53 警告安全。用户组信息: 特权行动例外作为:avinash (身份验证:简单) 原因:java.io.文件不发现异常: 文件不存在: hdfs://localhost:9000/home/avinash/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/lib/slf4j-api-