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
Настройка среды для самостоятельного обучения
- Войдите в Cloud Console и создайте новый проект или используйте существующий. (Если у вас ещё нет учётной записи Gmail или G Suite, вам необходимо её создать .)
Запомните идентификатор проекта — уникальное имя для всех проектов Google Cloud (имя, указанное выше, уже занято и не будет вам работать, извините!). Далее в этой практической работе он будет обозначаться как PROJECT_ID
.
- Далее вам необходимо включить биллинг в Cloud Console, чтобы использовать ресурсы Google Cloud.
Выполнение этой лабораторной работы не должно обойтись вам дороже нескольких долларов, но может обойтись дороже, если вы решите использовать больше ресурсов или оставите их запущенными.
Новые пользователи Google Cloud имеют право на бесплатную пробную версию стоимостью 300 долларов США .
Активировать Cloud Shell
- В консоли Cloud нажмите «Активировать Cloud Shell» .
.
Если вы никогда раньше не запускали Cloud Shell, вам будет показан промежуточный экран (под сгибом) с описанием его функций. В этом случае нажмите «Продолжить» (и вы больше никогда его не увидите). Вот как выглядит этот одноразовый экран:
Подготовка и подключение к Cloud Shell займет всего несколько минут.
Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Она предоставляет постоянный домашний каталог объёмом 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Значительную часть работы в этой лабораторной работе, если не всю, можно выполнить, просто используя браузер или Chromebook.
После подключения к 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`
gcloud config list project
Вывод команды
[core] project = <PROJECT_ID>
Если это не так, вы можете установить его с помощью этой команды:
gcloud config set project <PROJECT_ID>
Вывод команды
Updated property [core/project].
- После запуска 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
- Теперь вам нужно будет клонировать и протестировать приложение 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 в качестве базы данных.
Обновите файл 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
- Наконец, включите профиль 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
- Вы можете запустить приложение Spring Boot обычным способом с помощью плагина Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
- После запуска приложения нажмите «Веб-просмотр» .
на панели инструментов Cloud Shell выберите Предварительный просмотр на порту 8080 .
Вы должны снова увидеть в своем браузере домашнюю страницу Spring Petclinic, как показано здесь:
- Добавьте запись о владельце домашнего животного.
Необязательно: убедитесь, что Cloud SQL сохранил данные.
Вы можете убедиться, что введённые вами данные сохранены в Cloud SQL, как показано здесь. Нажмите Enter (Return на Macintosh), когда будет запрошен пароль.
$ 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
Вы узнали, как подключиться к Cloud SQL в своем приложении Spring Boot!