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 предоставляет автоматически настраиваемый источник данных , позволяющий легко воспользоваться преимуществами Cloud SQL с минимальными изменениями в коде. В этой кодовой лаборатории используется исходный код Spring Petclinic .
Предварительные условия
- Знание языка программирования и инструментов Java.
- Знание стандартных текстовых редакторов Linux, таких как Vim, Emacs и nano.
Что ты будешь делать
- Используйте Cloud SQL в своем приложении Spring Boot.
Что вам понадобится
- Проект Google Cloud
- Браузер, например Google Chrome или Firefox.
2. Настройка и требования
Самостоятельная настройка среды
- Войдите в Google Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .
- Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google. Вы всегда можете обновить его.
- Идентификатор проекта уникален для всех проектов Google Cloud и является неизменяемым (невозможно изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно идентифицируемый как
PROJECT_ID
). Если вам не нравится сгенерированный идентификатор, вы можете создать другой случайный идентификатор. Кроме того, вы можете попробовать свой собственный и посмотреть, доступен ли он. Его нельзя изменить после этого шага и он сохраняется на протяжении всего проекта. - К вашему сведению, есть третье значение — номер проекта , которое используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
- Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой лаборатории кода не будет стоить много, если вообще что-то стоить. Чтобы отключить ресурсы и избежать выставления счетов за пределами этого руководства, вы можете удалить созданные вами ресурсы или удалить проект. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .
Активировать Cloud Shell
- В Cloud Console нажмите «Активировать Cloud Shell». .
Если вы запускаете Cloud Shell впервые, вы увидите промежуточный экран с описанием того, что это такое. Если вам был представлен промежуточный экран, нажмите «Продолжить» .
Подготовка и подключение к Cloud Shell займет всего несколько минут.
Эта виртуальная машина загружена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Большую часть, если не всю, работу в этой лаборатории кода можно выполнить с помощью браузера.
После подключения к 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» .
В вашем браузере вы должны увидеть домашнюю страницу Petclinic, как показано здесь:
- Поиграйтесь и добавьте данные. Приложение использует базу данных HyperSQL в памяти. Теперь вы переключитесь с HyperSQL на использование Cloud SQL в качестве базы данных.
5. Используйте Cloud SQL в Petclinic
Обновите файл 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>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 для MySQL в приложении Spring Boot, добавив
mysql
в свойствоapplication.properties
'spring.profiles.active
:
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!