1. Прежде чем начать
Cloud SQL — это полностью управляемый сервис баз данных, который упрощает настройку, обслуживание, управление и администрирование реляционных баз данных в Google Cloud. Вы можете использовать Cloud SQL как с Cloud SQL для MySQL, так и с Cloud SQL для PostgreSQL.
В этом практическом занятии вы узнаете, как настроить экземпляр Cloud SQL для MySQL, а затем обновить приложение Spring Boot, чтобы оно использовало этот экземпляр Cloud SQL в качестве хранилища данных. Spring Boot Starter для Google Cloud SQL предоставляет автоматически настраиваемый DataSource , позволяющий легко использовать преимущества Cloud SQL с минимальными изменениями в коде. В этом практическом занятии используется исходный код Spring Petclinic .
Предварительные требования
- Знание языка программирования Java и инструментов его программирования.
- Знание стандартных текстовых редакторов Linux, таких как Vim, Emacs и nano.
Что вы будете делать
- Используйте Cloud SQL в своем приложении Spring Boot.
Что вам понадобится
- Проект Google Cloud
- Браузер, например, Google Chrome или Firefox.
2. Настройка и требования
Настройка среды для самостоятельного обучения
- Войдите в консоль Google Cloud и создайте новый проект или используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .



- Название проекта — это отображаемое имя участников данного проекта. Это строка символов, не используемая API Google. Вы всегда можете его изменить.
- Идентификатор проекта уникален для всех проектов Google Cloud и является неизменяемым (его нельзя изменить после установки). Консоль Cloud автоматически генерирует уникальную строку; обычно вам неважно, какая она. В большинстве практических заданий вам потребуется указать идентификатор вашего проекта (обычно обозначается как
PROJECT_ID). Если сгенерированный идентификатор вас не устраивает, вы можете сгенерировать другой случайный идентификатор. В качестве альтернативы вы можете попробовать свой собственный и посмотреть, доступен ли он. После этого шага его нельзя изменить, и он сохраняется на протяжении всего проекта. - К вашему сведению, существует третье значение — номер проекта , которое используется некоторыми API. Подробнее обо всех трех значениях можно узнать в документации .
- Далее вам потребуется включить оплату в консоли Cloud для использования ресурсов/API Cloud. Выполнение этого практического задания не потребует больших затрат, если вообще потребует. Чтобы отключить ресурсы и избежать дополнительных расходов после завершения этого урока, вы можете удалить созданные ресурсы или удалить проект. Новые пользователи Google Cloud имеют право на бесплатную пробную версию стоимостью 300 долларов США .
Активировать Cloud Shell
- В консоли Cloud нажмите «Активировать Cloud Shell» .
.

Если вы запускаете Cloud Shell впервые, вам будет показан промежуточный экран с описанием его возможностей. Если вам был показан промежуточный экран, нажмите «Продолжить» .

Подготовка и подключение к Cloud Shell займут всего несколько минут.

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Она предоставляет постоянный домашний каталог объемом 5 ГБ и работает в облаке Google, что значительно повышает производительность сети и аутентификацию. Большая часть, если не вся, ваша работа в этом практическом задании может быть выполнена с помощью браузера.
После подключения к Cloud Shell вы увидите, что прошли аутентификацию и что проект настроен на ваш идентификатор проекта.
- Выполните следующую команду в 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`
- Выполните следующую команду в Cloud Shell, чтобы убедиться, что команда gcloud знает о вашем проекте:
gcloud config list project
вывод команды
[core] project = <PROJECT_ID>
Если это не так, вы можете установить это с помощью следующей команды:
gcloud config set project <PROJECT_ID>
вывод команды
Updated property [core/project].
3. Настройте экземпляр Cloud SQL для 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
- Убедитесь, что установлена правильная версия Java, и запустите приложение Petclinic локально.
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/ $ ./mvnw spring-boot:run
- Нажмите «Предварительный просмотр веб-страницы» .
В Cloud Shell выберите «Предварительный просмотр» на порту 8080 .

В вашем браузере должна отобразиться главная страница ветеринарной клиники, как показано здесь:

- Поэкспериментируйте и добавьте данные. Приложение использует базу данных HyperSQL, работающую в оперативной памяти. Теперь вы переключитесь с HyperSQL на Cloud SQL в качестве базы данных.
5. Использование Cloud SQL в ветеринарной клинике.
Обновите файл pom.xml Maven.
Обновите файл 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>com.google.cloud</groupId>
<artifactId>spring-cloud-gcp-dependencies</artifactId>
<version>4.1.4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
...
<!-- Add CloudSQL Starter for MySQL -->
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-sql-mysql</artifactId>
</dependency>
...
</dependencies>
</project>
Обновите файл application-mysql.properties
- Замените содержимое файла
src/main/resources/application-mysql.propertiesследующими свойствами. Вам потребуется указать имя подключения к экземпляру, как это было сделано на предыдущем шаге.
src/main/resources/application-mysql.properties
database=mysql
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.5+.
spring.sql.init.mode=always
- Наконец, включите профиль Cloud SQL for MySQL в приложении Spring Boot, добавив
mysqlв свойствоspring.profiles.activeфайлаapplication.properties:
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, как показано здесь:

- Добавить запись о владельце питомца.
Необязательно: Убедитесь, что Cloud SQL сохранил данные.
Вы можете убедиться, что введенные вами данные сохранены в Cloud SQL, как показано здесь. Нажмите Enter, когда появится запрос на ввод пароля.
$ 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
7. Поздравляем!
Вы научились подключаться к Cloud SQL в своем приложении Spring Boot!