关于此 Codelab
1. 准备工作
Cloud SQL 是一项全代管式数据库服务,让您能够在 Google Cloud 上轻松设置、维护、管理和控制关系型数据库。您可以将 Cloud SQL 与 Cloud SQL for MySQL 或 Cloud SQL for PostgreSQL 搭配使用。
在此 Codelab 中,您将学习如何设置 Cloud SQL for MySQL 实例,然后如何更新 Spring Boot 应用来将 Cloud SQL 实例用作其后端存储。适用于 Google Cloud SQL 的 Spring Boot 入门版提供自动配置的 DataSource,让您能够轻松地利用 Cloud SQL,同时只需对代码进行极少的更改。本 Codelab 使用 Spring Petclinic 源代码。
前提条件
- 熟悉 Java 编程语言和工具
- 了解标准的 Linux 文本编辑器,例如 Vim、Emacs 和 nano
您将执行的操作
- 在 Spring Boot 应用中使用 Cloud SQL。
所需条件
- Google Cloud 项目
- 一个浏览器,例如 Google Chrome 或 Firefox
2. 设置和要求
自定进度的环境设置
- 登录 Cloud Console,然后创建一个新项目或重复使用现有项目。(如果您还没有 Gmail 或 G Suite 帐号,则必须创建一个。)
请记住项目 ID,它在所有 Google Cloud 项目中都是唯一名称(很抱歉,上述名称已被占用,您无法使用!)。它稍后将在此 Codelab 中被称为 PROJECT_ID
。
- 接下来,您需要在 Cloud Console 中启用结算功能,才能使用 Google Cloud 资源。
在此 Codelab 中运行仅花费几美元,但是如果您决定使用更多资源或继续让它们运行,费用可能更高。
Google Cloud 的新用户有资格获享 $300 免费试用。
激活 Cloud Shell
- 在 Cloud Console 中,点击激活 Cloud Shell
。
如果您以前从未启动过 Cloud Shell,您将看到一个中间屏幕(在折叠下面),上面描述了它是什么。如果是这种情况,请点击继续(您将永远不会再看到它)。一次性屏幕如下所示:
预配和连接到 Cloud Shell 只需花几分钟时间。
这个虚拟机已加载了您需要的所有开发工具。它提供了一个持久的 5GB 主目录,并且在 Google Cloud 中运行,大大增强了网络性能和身份验证。只需使用一个浏览器或 Chromebook 即可完成本 Codelab 中的大部分(甚至全部)工作。
在连接到 Cloud Shell 后,您应该会看到自己已通过身份验证,并且相关项目已设置为您的项目 ID:
- 在 Cloud Shell 中运行以下命令以确认您已通过身份验证:
gcloud auth list
命令输出
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
gcloud config list project
命令输出
[core] project = <PROJECT_ID>
如果不是上述结果,您可以使用以下命令进行设置:
gcloud config set project <PROJECT_ID>
命令输出
Updated property [core/project].
3. 设置 Cloud SQL for MySQL 实例
- 启动 Cloud Shell 后,您可以使用命令行创建新的 Cloud SQL 实例:
$ gcloud sql instances create my-instance
此操作完成后,您的实例即准备就绪可供使用。
- 现在创建一个将用于 Petclinic 应用的数据库:
$ gcloud sql databases create petclinic --instance my-instance
您还可以通过 Cloud Console 访问和配置实例。
- 运行以下命令来获取格式为
project-id:zone-id:instance-id
的实例连接名称。稍后您将使用它来配置 Spring Boot 应用。
$ gcloud sql instances describe my-instance |grep connectionName
4. 在本地克隆和测试 Petclinic 应用
- 现在,您将在本地克隆和测试 Petclinic 应用。
$ git clone https://github.com/spring-projects/spring-petclinic $ cd spring-petclinic $ ./mvnw spring-boot:run
- 点击 Cloud Shell 中的网页预览
,然后选择在端口 8080 上预览。
您应该在浏览器中看到如下所示的 Petclinic 首页:
- 操作和添加数据。应用使用内存中 HyperSQL 数据库。您现在将从 HyperSQL 切换到使用 Cloud SQL 作为数据库。
5. 在 Petclinic 中使用 Cloud SQL
更新 Maven pom.xml 文件
更新 pom.xml
文件,如下所示。入门版提供了一个自动配置的 DataSource
对象,用于连接到 Cloud SQL 数据库。您可以使用 Vim、nano 或 Emacs 来编辑文件。
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
...
<!-- Add Spring Cloud GCP Dependency BOM -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-dependencies</artifactId>
<version>1.0.0.RC1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
...
<!-- Add CloudSQL Starter for MySQL -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-sql-mysql</artifactId>
</dependency>
...
</dependencies>
<repositories>
<!-- Use Spring Milestone Repository -->
<repository>
<id>repository.spring.milestone</id>
<name>Spring Milestones Repository</name>
<url>http://repo.spring.io/milestone</url>
</repository>
</repositories>
</project>
更新 application-mysql.properties
- 将
src/main/resources/application-mysql.properties
的内容替换为以下属性。您需要设置上一步中的实例连接名称。
src/main/resources/application-mysql.properties
database=mysql
# Delete the rest of the original content of the file and replace with the following:
spring.cloud.gcp.sql.database-name=petclinic
spring.cloud.gcp.sql.instance-connection-name=YOUR_CLOUD_SQL_INSTANCE_CONNECTION_NAME
# Initialize the database since the newly created Cloud SQL database has no tables. The following flag is for Spring Boot 2.
spring.datasource.initialization-mode=always
- 最后,通过将
mysql
添加到application.properties' spring.profiles.active
属性,在 Spring Boot 应用中启用 Cloud SQL for MySQL 配置文件:
src/main/resources/application.properties
# Keep the content of the file the same
...
# In the last line, add mysql to the spring.profiles.active property
spring.profiles.active=mysql
6. 在 Cloud Shell 中运行应用
- 您可以使用 Spring Boot 插件正常启动 Spring Boot 应用:
$ ./mvnw -DskipTests spring-boot:run
- 启动该应用后,点击 Cloud Shell 工具栏中的网页预览
,然后选择在端口 8080 上预览。
您应该会在浏览器中看到 Spring Petclinic 首页,如下所示:
- 添加 pet 所有者条目。
可选:验证 Cloud SQL 是否已经保留数据
您可以验证输入的数据是否已保存到 Cloud SQL,如下所示。当系统提示您输入密码时,按 Enter 键(Macintosh 上的 return 键)。
$ gcloud sql connect my-instance -u root Whitelisting your IP for incoming connection for 5 minutes...done. Enter password: <Press Enter, there is no password by default> ... mysql> use petclinic; mysql> select * from owners;
可选:删除您的 Cloud SQL 实例
停止应用后,您可以使用以下命令来删除 Cloud SQL 实例:
$ gcloud sql instances delete my-instance