在 Spring Boot 中读取 mongoUrireplicatSet 配置时出错

问题描述 投票:0回答:1

我在属性文件中设置了 mongoUri 配置,如下所示:

spring.data.mongodb.uri=mongodb://user:[email protected]:27017,mongodb-02.uata.lokal:27017/dbName 

我收到此错误:

原因:com.mongodb.MongoTimeoutException:等待与 WritableServerSelector 匹配的服务器时,30000 毫秒后超时。集群状态的客户端视图为 {type=REPLICA_SET,servers=[{address=mongodb-02.uata.lokal:27017, type=REPLICA_SET_SECONDARY, roundTripTime=84.6 ms, state=CONNECTED}, {address=mongodb-01:27017, type=UNKNOWN、state=CONNECTING、Exception={com.mongodb.MongoSocketException: mongodb-01: nodename 或 servname 提供,或未知},由 {java.net.UnknownHostException: mongodb-01: nodename 或 servname 提供,或未知}},{地址=mongoarb-01.uata.lokal:27017,类型=REPLICA_SET_ARBITER,roundTripTime=88.8毫秒,状态=CONNECTED}]

请帮助我应该如何添加 mongo 副本集配置

spring mongodb spring-mvc spring-boot spring-data-mongodb
1个回答
0
投票

我的情况的问题是主服务器是使用主机名而不是

localhost
来配置的,我可以从
mongosh
中看到:

rs.conf()
cfg = rs.conf()
{
  _id: 'rs',
  version: 2,
  term: 3,
  members: [
    {
      _id: 0,
      host: 'MYHOSTNAME:27017',
      arbiterOnly: false,
      buildIndexes: true,
      hidden: false,
      priority: 1,
      tags: {},
      secondaryDelaySecs: Long("0"),
      votes: 1
    }
  ],
  ...
  }
}

可能需要从

mongosh
重新配置副本集:

cfg = rs.conf()
cfg.members[0].host = "localhost:27017"
rs.reconfig(cfg)

现在RS成员指向

localhost

rs.conf()
cfg = rs.conf()
{
  _id: 'rs',
  version: 2,
  term: 3,
  members: [
    {
      _id: 0,
      host: 'localhost:27017',
      arbiterOnly: false,
      buildIndexes: true,
      hidden: false,
      priority: 1,
      tags: {},
      secondaryDelaySecs: Long("0"),
      votes: 1
    }
  ],
  ...
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.