O Cloud SQL é um serviço de banco de dados totalmente gerenciado que facilita a configuração, a manutenção, o gerenciamento e a administração de bancos de dados relacionais no Google Cloud. É possível usar o Cloud SQL com o Cloud SQL para MySQL ou o Cloud SQL para PostgreSQL.
Neste codelab, você vai aprender a configurar uma instância do Cloud SQL para MySQL e atualizar um app Spring Boot para usar a instância do Cloud SQL como armazenamento de back-end. O Spring Boot Starter para Google Cloud SQL (em inglês) oferece um DataSource autoconfigurado, permitindo que você aproveite o Cloud SQL com o mínimo de mudanças no seu código. Este codelab usa o código-fonte do Spring Petclinic.
Pré-requisitos
- Noções básicas sobre a linguagem de programação Java e ferramentas
- Conhecimento de editores de texto padrão do Linux, como Vim, Emacs e nano
O que você aprenderá
- Usar o Cloud SQL no seu app Spring Boot.
O que é necessário
- um projeto do Google Cloud;
- Um navegador, como o Google Chrome ou o Firefox
Configuração de ambiente autoguiada
- Faça login no console do Cloud e crie um novo projeto ou reutilize um existente. Crie uma se você ainda não tiver uma conta do Gmail ou do G Suite.
Lembre-se do código do projeto, um nome exclusivo em todos os projetos do Google Cloud. O nome acima já foi escolhido e não servirá para você. Faremos referência a ele mais adiante neste codelab como PROJECT_ID
.
- Em seguida, será necessário ativar o faturamento no console do Cloud para usar os recursos do Google Cloud.
A execução deste codelab não deve custar mais do que alguns dólares, mas pode ser mais se você decidir usar mais recursos ou deixá-los em execução.
Novos usuários do Google Cloud estão qualificados para um teste sem custo financeiro de US$300.
Ativar o Cloud Shell
- No console do Cloud, clique em Ativar o Cloud Shell
.
Se você nunca tiver iniciado o Cloud Shell, verá uma tela intermediária (abaixo da dobra) com a descrição do que ele é. Se esse for o caso, clique em Continuar e você não o verá novamente. Esta é a aparência dessa tela única:
Leva apenas alguns instantes para provisionar e se conectar ao Cloud Shell.
Essa máquina virtual contém todas as ferramentas de desenvolvimento necessárias. Ela oferece um diretório principal persistente de 5 GB, além de ser executada no Google Cloud. Isso aprimora o desempenho e a autenticação da rede. Praticamente todo o seu trabalho neste codelab pode ser feito em um navegador ou no seu Chromebook.
Depois de se conectar ao Cloud Shell, você já estará autenticado e o projeto já estará configurado com seu ID do projeto.
- Execute o seguinte comando no Cloud Shell para confirmar que você está autenticado:
gcloud auth list
Resposta ao comando
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
gcloud config list project
Resposta ao comando
[core] project = <PROJECT_ID>
Se o projeto não estiver configurado, configure-o usando este comando:
gcloud config set project <PROJECT_ID>
Resposta ao comando
Updated property [core/project].
- Depois que o Cloud Shell for iniciado, use a linha de comando para criar uma instância do Cloud SQL:
$ gcloud sql instances create my-instance
Após a conclusão dessa operação, sua instância estará pronta para uso.
- Agora crie um banco de dados que você vai usar para o app Petclinic:
$ gcloud sql databases create petclinic --instance my-instance
Também é possível acessar e configurar a instância por meio do Console do Cloud.
- Receba o nome da conexão da instância no formato
project-id:zone-id:instance-id
executando o comando a seguir. Você vai usar isso mais tarde na configuração do app Spring Boot.
$ gcloud sql instances describe my-instance |grep connectionName
- Agora, você vai clonar e testar o app Petclinic localmente.
$ git clone https://github.com/spring-projects/spring-petclinic $ cd spring-petclinic $ ./mvnw spring-boot:run
- Clique em Visualização da Web
no Cloud Shell e selecione Visualizar na porta 8080.
Você vai ver a página inicial do Petclinic, como mostrado aqui no navegador:
- Teste e adicione dados. O app usa um banco de dados HyperSQL na memória. Agora você vai mudar do HyperSQL para o Cloud SQL como banco de dados.
Atualize o arquivo pom.xml do Maven
Atualize o arquivo pom.xml
conforme mostrado aqui. O starter fornece um objeto DataSource
autoconfigurado para se conectar ao banco de dados do Cloud SQL. Você pode usar o Vim, o nano ou o Emacs para editar o arquivo.
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>
Atualizar application-mysql.properties
- Substitua o conteúdo de
src/main/resources/application-mysql.properties
pelas seguintes propriedades. Você precisará definir o nome da conexão da instância da etapa anterior.
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
- Por fim, ative um perfil do Cloud SQL para MySQL no app Spring Boot adicionando
mysql
à propriedadeapplication.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
- Você pode iniciar o app Spring Boot normalmente com o plug-in Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
- Quando o app for iniciado, clique em Visualização da Web
na barra de ferramentas do Cloud Shell e selecione Visualizar na porta 8080.
A página inicial do Spring Petclinic vai aparecer novamente, como mostrado aqui no navegador:
- Adicione uma entrada de proprietário de animal de estimação.
Opcional: verifique se o Cloud SQL persistiu os dados
Verifique se os dados inseridos foram mantidos no Cloud SQL, conforme mostrado aqui. Pressione "Enter" (ou "Return" no Macintosh) quando uma senha for solicitada.
$ 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;
Opcional: excluir a instância do Cloud SQL
Depois de interromper o app, é possível excluir a instância do Cloud SQL usando o seguinte comando:
$ gcloud sql instances delete my-instance
Você aprendeu a se conectar ao Cloud SQL no seu app Spring Boot.