簡體   English   中英

Pymongo 不會連接到 Mongo 副本集

[英]Pymongo won't connect to Mongo replica set

我似乎無法將 pymongo 連接到我創建的副本集。 我收到的消息似乎沒有多大意義,因為它不是我所看到的。

我先說明一下我的配置。

基本上我有三台機器 10.141.0.156, 10.141.0.158, 10.141.0.159

我有 3 個 mongod 實例,每個實例都在不同的機器上運行,每個實例都運行:

mongod --configsvr --dbpath /mnt/sdb/ --port 27019

接下來,我將 3 台 mongod 機器添加到副本集:

{
    "set" : "replSet",
    "date" : ISODate("2016-04-01T12:23:12.552Z"),
    "myState" : 2,
    "term" : NumberLong(2),
    "syncingTo" : "10.141.0.158:27017",
    "configsvr" : true,
    "heartbeatIntervalMillis" : NumberLong(2000),
    "members" : [
        {
            "_id" : 0,
            "name" : "10.141.0.156:27017",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 2751,
            "optime" : {
                "ts" : Timestamp(1459513383, 6),
                "t" : NumberLong(2)
            },
            "optimeDate" : ISODate("2016-04-01T12:23:03Z"),
            "syncingTo" : "10.141.0.158:27017",
            "configVersion" : 2,
            "self" : true
        },
        {
            "_id" : 1,
            "name" : "10.141.0.158:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 2749,
            "optime" : {
                "ts" : Timestamp(1459513383, 6),
                "t" : NumberLong(2)
            },
            "optimeDate" : ISODate("2016-04-01T12:23:03Z"),
            "lastHeartbeat" : ISODate("2016-04-01T12:23:11.054Z"),
            "lastHeartbeatRecv" : ISODate("2016-04-01T12:23:11.579Z"),
            "pingMs" : NumberLong(0),
            "electionTime" : Timestamp(1459510633, 1),
            "electionDate" : ISODate("2016-04-01T11:37:13Z"),
            "configVersion" : 2
        },
        {
            "_id" : 2,
            "name" : "10.141.0.159:27017",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 2749,
            "optime" : {
                "ts" : Timestamp(1459513383, 6),
                "t" : NumberLong(2)
            },
            "optimeDate" : ISODate("2016-04-01T12:23:03Z"),
            "lastHeartbeat" : ISODate("2016-04-01T12:23:11.261Z"),
            "lastHeartbeatRecv" : ISODate("2016-04-01T12:23:12.240Z"),
            "pingMs" : NumberLong(0),
            "syncingTo" : "10.141.0.158:27017",
            "configVersion" : 2
        }
    ],
    "ok" : 1
}

接下來我在第一台機器 10.141.0.156 上啟動了 mongos:

mongos --configdb replSet/10.141.0.156:27017,10.141.0.158:27017,10.141.0.159:27017 --port 27077

此時一切正常,我沒有收到任何錯誤。

然后我嘗試使用 pymongo 3.2.1 連接到副本集:

MongoClient("10.141.0.156", 27077, replicaSet='replSet')

當我嘗試讀取所有鍵或寫入時,我得到:

*** ServerSelectionTimeoutError:沒有可用於副本集名稱“replSet”的副本集成員

盡管在 mongo shell 中看到了副本集。

對於副本集,您需要啟動將參與副本集的mongod實例; 帶有--replSet標志。

mongod --dbpath /mnt/sdb/ --port 27019 --replSet "your_replicaset_name"

使用 --configsvr 選項,您正在啟動用於分片的配置服務器,而不是副本集。 有關更多信息,請參閱https://docs.mongodb.org/manual/reference/program/mongod/#bin.mongod

請參閱有關如何設置副本集的本教程: https : //docs.mongodb.org/manual/tutorial/deploy-replica-set/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM