首页 > 解决方案 > 如何使用spring添加多个谷歌云数据源

问题描述

我有两个已经在本地工作的 sql 数据源,但我想将它部署到两个谷歌云应用程序引擎(我现在正在使用它)。我需要更改我的应用程序属性以定义第二个谷歌实例/数据库吗?

我已经在我的 pom 中为名为sql.instance.secondand的连接设置了链接sql.database.second。我不知道如何定义spring.cloud.gcp.sql...第二个应用引擎。我的另一个选择是根本不在本地运行它,而只是在我定义数据源时定义一个云实例,然后为每个实例定义一个驱动程序,但我也不太确定如何做到这一点。

spring.cloud.gcp.sql.instance-connection-name=@sql.instance.first@
spring.cloud.gcp.sql.database-name=@sql.database.first@

primary.datasource.jdbc-url = @mysql.host.first@
primary.datasource.username = @mysql.user.first@
primary.datasource.password = @mysql.pass.first@

secondary.datasource.jdbc-url = @mysql.host.second@
secondary.datasource.username = @mysql.user.second@
secondary.datasource.password = @mysql.pass.second@

标签: javadatabasespringgoogle-app-enginegoogle-cloud-platform

解决方案


我能够通过首先摆脱这种依赖来让它工作

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-gcp-starter-sql-mysql</artifactId>
</dependency>

然后把我改成application.properties这个

primary.datasource.driverClassName=com.mysql.jdbc.GoogleDriver
primary.datasource.jdbc-url = @mysql.host.first@
primary.datasource.username = @mysql.user.first@
primary.datasource.password = @mysql.pass.first@

secondary.datasource.driverClassName=com.mysql.jdbc.GoogleDriver
secondary.datasource.jdbc-url = @mysql.host.second@
secondary.datasource.username = @mysql.user.second@
secondary.datasource.password = @mysql.pass.second@

并删除

spring.cloud.gcp.sql.instance-connection-name=@sql.instance.first@
spring.cloud.gcp.sql.database-name=@sql.database.first@

@mysql.host.first@将我的 pom.xml 中的 url 更改为

<mysql.host.first>jdbc:google:mysql:...</mysql.host.first>

推荐阅读