我有一个在 cloud run 上运行的 spring boot 应用程序,到目前为止我只需要添加 spring cloud gcp mysql
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-sql-mysql</artifactId>
<version>1.2.8.RELEASE</version>
</dependency>
我的 POM 中的依赖项,并配置我的 application.yml 文件以设置数据库名称、连接名称等,它在本地和云上运行良好。
我的应用程序.yml:
spring:
cloud:
gcp:
sql:
enabled: true
database-name: pos_database
instance-connection-name: pos-sys:asia-southeast2:pos-server-database
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: ***
password: ***
hikari:
maximum-pool-size: 20
但是我意识到冷启动性能受到了影响,因为在启动时套接字工厂通过 SSL 套接字连接到数据库实例:
2021-05-31 13:10:07.152 INFO 1539 --- [onnection adder] c.g.cloud.sql.core.CoreSocketFactory :
Connecting to Cloud SQL instance [pos-sys:asia-southeast2:owl-server-database] via SSL socket.
我得到一堆重复的台词
2021-05-31 13:10:09.461 INFO 1539 --- [connection adder] c.g.cloud.sql.core.CoreSocketFactory :
Connecting to Cloud SQL instance [pos-sys:asia-southeast2:pos-server-database] via SSL socket.
我知道有一种更快的连接方式,然后应用程序在云上运行,到目前为止我一直在关注本教程:
https://cloud.google.com/sql/docs/mysql/connect-run
但是我对它说我必须与 unix socket 连接的最后一部分感到非常困惑,这是 docker 的事情还是在我的应用程序中?ConnectionPoolContextListener.java 文件必须去哪里?它还在文件本身的注释中说不要将它用于 java 用户,而是使用
Cloud SQL JDBC Socket Factory 但是当我转到那个链接时,它说要为 mysql-connector 添加一个依赖项,但这不是已经包含在 spring-gcp-starter-mysql 中了吗?它还说以这种格式创建连接字符串:
jdbc:mysql:///<DATABASE_NAME>?cloudSqlInstance=<INSTANCE_CONNECTION_NAME>&socketFactory=com.google.cloud.sql.mysql.SocketFactory&user=<MYSQL_USER_NAME>&password=<MYSQL_USER_PASSWORD>
但没有提到我把这个放在哪里?
所以总结一下:
我有一个启用了管理 api 的云 mysql 实例。
我通过选择我的数据库实例在我的云运行中启用了连接到 Cloud SQL。
我对下一步是什么以及下一步做什么的文档感到非常困惑。