【问题标题】:Spring boot connect to MongoDB replica set running with an ArbiterSpring boot 连接到使用仲裁器运行的 MongoDB 副本集
【发布时间】:2016-09-06 06:54:22
【问题描述】:

我的应用程序是一个 Spring Boot 应用程序,应用程序配置属性文件如下所示:

....
spring.data.mongodb.host=ip
spring.data.mongodb.port=27017
spring.data.mongodb.admin.database=admin
spring.data.mongodb.database=myDB
spring.data.mongodb.username=su
spring.data.mongodb.password=su1$
....

现在,为了实现高可用性,MongoDB 已移至 Primary-Secondary-Arbiter 设置。 为了连接到这个,我应该做些什么改变。尝试用逗号分隔,但没有帮助。

【问题讨论】:

  • 哪个版本的mongodb? 2个还是3个?
  • MongoDB shell 版本:3.2.5

标签: java spring mongodb spring-boot replication


【解决方案1】:

正如 Spring Boot documentation 所说:

spring.data.mongodb.host 和 spring.data.mongodb.port 不是 如果您使用的是 Mongo 3.0 Java 驱动程序,则支持。在这种情况下, spring.data.mongodb.uri 应用于提供所有 配置。

您可以设置spring.data.mongodb.uri 属性来更改 URL 和 配置副本集等附加设置。

假设您有一个名为mc 的副本集,其中mongo1:27017 作为Primary,mongo2:27017 作为Secondary,mongo3:27017 作为Arbiter em>,那么你可以使用:

spring.data.mongodb.uri=mongodb://su:su1$@mongo1:27017,mongo2:27017/myDB?replicaSet=mc

请注意that:

连接到副本集时,提供种子列表很重要 至少两个 mongod 实例。如果您只提供连接 单个mongod实例的点,并省略replicaSet,客户端 将创建一个独立的连接。

使用 MongoDB 连接字符串,您可以设置其他属性,例如 Read Preference。查看 MongoDB documentation 了解更多详情。

【讨论】:

  • 能否不使用问题中提到的属性仍然实现?
  • 您不需要这些配置。是的,你可以
  • 如果您使用的是 Mongo 3.0 Java 驱动程序,则不支持 spring.data.mongodb.host 和 spring.data.mongodb.port。在这种情况下,应该使用spring.data.mongodb.uri 提供所有配置。
  • 我正在使用:org.mongodbmongo-java-driver3.2.2
  • 和 spring.data.mongodb.host 和 spring.data.mongodb.port 正在独立设置
猜你喜欢
  • 2019-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-31
  • 2013-11-26
  • 2013-11-02
  • 1970-01-01
相关资源
最近更新 更多