首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ReplicaSetNoPrimary MongooseServerSelectionError: getaddrinfo EAI_AGAIN mongodb-主数据库

ReplicaSetNoPrimary MongooseServerSelectionError: getaddrinfo EAI_AGAIN mongodb-主数据库
EN

Stack Overflow用户
提问于 2020-11-19 09:37:45
回答 1查看 5.6K关注 0票数 1

我在码头安装了一个mongodb副本。当我使用cli连接到mongodb时,它工作得很好。但是,试图通过node.js使用猫鼬包连接到它会给出以下错误消息。

(/home/kay/checkpoint/stream-hatchet/node_modules/mongoose/lib/connection.js:800:32) at /home/kay/checkpoint/stream-hatchet/node_modules/mongoose/lib/index.js:341:10 at /home/kay/checkpoint/stream-hatchet/node_modules/mongoose/lib/helpers/promiseOrCallback.js:31:5 at new诺言() at promiseOrCallback (/home/kay/检查点/溪流)/node_modules/mongoose/lib/helpers/promiseOrCallback.js:30:10) at Mongoose.connect (/home/kay/checkpoint/stream-hatchet/node_modules/mongoose/lib/index.js:340:10) at Object.MongoDBService as default流媒体(/home/kay/checkpoint/stream-hatchet/src/main.ts:16:29) at Object。(/home/kay/checkpoint/stream-hatchet/src/main.ts:38:1) at Module._compile ( (/home/kay/checkpoint/stream-hatchet/node_modules/ts-node/src/index.ts:858:23) /cjs/loader.js:1137:30),Module.m._compile (/home/kay/checkpoint/stream-hatchet/node_modules/ts-node/src/index.ts:858:23) at Module._extensions..js (internal/modules/cjs/loader.js:1157:10)。as .ts at Module.load (内部/模块/cjs/loader.js:985:32) at Function.Module._load (内部/模块/cjs/loader.js:878:14) at Function.executeUserEntryPoint as runMain { TopologyDescription { type:'ReplicaSetNoPrimary',setName:‘复制’,maxSetVersion: 61323,maxElectionId: 7fffff 0000000000000002,服务器: Map {‘mongodb-主:27017’=> ServerDescription,‘mongodb-仲裁者:27017’=> ServerDescription },stale: false,兼容: true,compatibilityError: null,logicalSessionTimeoutMinutes:,heartbeatFrequencyMS: 10000,localThresholdMS: 15,commonWireVersion: 9}

{原因: TopologyDescription { type:'ReplicaSetNoPrimary',setName:'replicaset',maxSetVersion: 61323,maxElectionId: 7fffff0000000000000002,服务器: Map {‘mongodb-主:27017’=> ServerDescription,‘mongodb-仲裁器:27017’=> ServerDescription },陈旧:假,兼容: true,compatibilityError: null,logicalSessionTimeoutMinutes: null,heartbeatFrequencyMS: 10000,localThresholdMS: 15,commonWireVersion: 9}}

nodejs

代码语言:javascript
运行
复制
import mongoose from "mongoose";

const MongoDBService = async () => {

    try {

        const connectionString = "mongodb://root:password123@localhost:27017/streamhatchet?authSource=admin&replicaSet=replicaset&retryWrites=true"

        const options = {
          useNewUrlParser: true,
          useUnifiedTopology: true,
          useCreateIndex: true,
          useFindAndModify: false,
          autoIndex: true,
          poolSize: 10,
          serverSelectionTimeoutMS: 30000,
          socketTimeoutMS: 75000,
          family: 4,
          keepAlive: true, 
          keepAliveInitialDelay: 300000,
        };

        await mongoose.connect(connectionString, options);

    } catch (error) {
        console.log(error);
    }

    mongoose.connection.on("error", (err) => {
       console.log(error);
    });
};


export default MongoDBService;

docker-compose.yml;

代码语言:javascript
运行
复制
version: '2'

services:
  mongodb-primary:
    image: 'docker.io/bitnami/mongodb:4.4-debian-10'
    ports:
      - 27017:27017
    environment:
      - MONGODB_ADVERTISED_HOSTNAME=mongodb-primary
      - MONGODB_REPLICA_SET_MODE=primary
      - MONGODB_ROOT_PASSWORD=password123
      - MONGODB_REPLICA_SET_KEY=replicasetkey123
    volumes:
      - 'mongodb_master_data:/bitnami/mongodb'

  mongodb-arbiter:
    image: 'docker.io/bitnami/mongodb:4.4-debian-10'
    depends_on:
      - mongodb-primary
    environment:
      - MONGODB_ADVERTISED_HOSTNAME=mongodb-arbiter
      - MONGODB_REPLICA_SET_MODE=arbiter
      - MONGODB_INITIAL_PRIMARY_HOST=mongodb-primary
      - MONGODB_INITIAL_PRIMARY_ROOT_PASSWORD=password123
      - MONGODB_REPLICA_SET_KEY=replicasetkey123

volumes:
  mongodb_master_data:
    driver: local
代码语言:javascript
运行
复制
mongo --host localhost --port 27017 --username root --password password123 admin

rs.status()

代码语言:javascript
运行
复制
replicaset:PRIMARY> rs.status()
{
    "set" : "replicaset",
    "date" : ISODate("2020-11-19T09:36:25.442Z"),
    "myState" : 1,
    "term" : NumberLong(2),
    "syncSourceHost" : "",
    "syncSourceId" : -1,
    "heartbeatIntervalMillis" : NumberLong(2000),
    "majorityVoteCount" : 2,
    "writeMajorityCount" : 1,
    "votingMembersCount" : 2,
    "writableVotingMembersCount" : 1,
    "optimes" : {
        "lastCommittedOpTime" : {
            "ts" : Timestamp(1605778584, 1),
            "t" : NumberLong(2)
        },
        "lastCommittedWallTime" : ISODate("2020-11-19T09:36:24.429Z"),
        "readConcernMajorityOpTime" : {
            "ts" : Timestamp(1605778584, 1),
            "t" : NumberLong(2)
        },
        "readConcernMajorityWallTime" : ISODate("2020-11-19T09:36:24.429Z"),
        "appliedOpTime" : {
            "ts" : Timestamp(1605778584, 1),
            "t" : NumberLong(2)
        },
        "durableOpTime" : {
            "ts" : Timestamp(1605778584, 1),
            "t" : NumberLong(2)
        },
        "lastAppliedWallTime" : ISODate("2020-11-19T09:36:24.429Z"),
        "lastDurableWallTime" : ISODate("2020-11-19T09:36:24.429Z")
    },
    "lastStableRecoveryTimestamp" : Timestamp(1605778554, 1),
    "electionCandidateMetrics" : {
        "lastElectionReason" : "electionTimeout",
        "lastElectionDate" : ISODate("2020-11-19T09:17:54.388Z"),
        "electionTerm" : NumberLong(2),
        "lastCommittedOpTimeAtElection" : {
            "ts" : Timestamp(0, 0),
            "t" : NumberLong(-1)
        },
        "lastSeenOpTimeAtElection" : {
            "ts" : Timestamp(1605777471, 8),
            "t" : NumberLong(1)
        },
        "numVotesNeeded" : 1,
        "priorityAtElection" : 5,
        "electionTimeoutMillis" : NumberLong(10000),
        "newTermStartDate" : ISODate("2020-11-19T09:17:54.390Z"),
        "wMajorityWriteAvailabilityDate" : ISODate("2020-11-19T09:17:54.480Z")
    },
    "members" : [
        {
            "_id" : 0,
            "name" : "mongodb-primary:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 1112,
            "optime" : {
                "ts" : Timestamp(1605778584, 1),
                "t" : NumberLong(2)
            },
            "optimeDate" : ISODate("2020-11-19T09:36:24Z"),
            "syncSourceHost" : "",
            "syncSourceId" : -1,
            "infoMessage" : "",
            "electionTime" : Timestamp(1605777474, 1),
            "electionDate" : ISODate("2020-11-19T09:17:54Z"),
            "configVersion" : 61323,
            "configTerm" : -1,
            "self" : true,
            "lastHeartbeatMessage" : ""
        },
        {
            "_id" : 1,
            "name" : "mongodb-arbiter:27017",
            "health" : 1,
            "state" : 7,
            "stateStr" : "ARBITER",
            "uptime" : 1108,
            "lastHeartbeat" : ISODate("2020-11-19T09:36:24.649Z"),
            "lastHeartbeatRecv" : ISODate("2020-11-19T09:36:24.666Z"),
            "pingMs" : NumberLong(0),
            "lastHeartbeatMessage" : "",
            "syncSourceHost" : "",
            "syncSourceId" : -1,
            "infoMessage" : "",
            "configVersion" : 61323,
            "configTerm" : -1
        }
    ],
    "ok" : 1,
    "$clusterTime" : {
        "clusterTime" : Timestamp(1605778584, 1),
        "signature" : {
            "hash" : BinData(0,"WD1gDogfO+q0uWoLOy2tvycsDx8="),
            "keyId" : NumberLong("6896761722598588420")
        }
    },
    "operationTime" : Timestamp(1605778584, 1)
}
EN

回答 1

Stack Overflow用户

发布于 2022-06-13 21:01:30

将此参数添加到连接字符串中:

代码语言:javascript
运行
复制
directConnection=true

如下所示:

代码语言:javascript
运行
复制
mongodb://root:password123@localhost:27017/streamhatchet?directConnection=true&authSource=admin&replicaSet=replicaset&retryWrites=true

参考文献:

https://www.mongodb.com/docs/drivers/go/current/fundamentals/connection/#connection-options

https://www.mongodb.com/docs/mongodb-shell/connect/#connect-to-a-replica-set

https://pkg.go.dev/go.mongodb.org/mongo-driver@v1.9.0/mongo/options#ClientOptions.SetDirect

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64908953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档