1. Visão geral
Última atualização:23/07/2020
O que é o Cloud Spanner?
O Google Cloud Spanner é um banco de dados distribuído globalmente e em conformidade com ACID que lida automaticamente com réplicas, fragmentação e processamento de transações. Assim, você pode escalonar rapidamente para atender a qualquer padrão de uso e garantir o sucesso dos seus produtos.
Principais características
- Banco de dados relacional, criado para escalonamento:tudo que você espera de um banco de dados relacional (esquemas, consultas SQL e transações ACID) testado na prática e pronto para escalonamento global.
- Disponibilidade de 99,999%:o Cloud Spanner oferece disponibilidade de 99,999% líder do setor para instâncias multirregionais, o que significa 10 vezes menos inatividade do que quatro noves. Além disso, ele oferece replicação transparente e síncrona em todas as configurações regionais e multirregionais.
- Fragmentação automática:o Cloud Spanner otimiza o desempenho ao fragmentar automaticamente os dados com base na carga da solicitação e no tamanho dos dados. Como resultado, você passa menos tempo se preocupando com o escalonamento do seu banco de dados e, em vez disso, se concentra na expansão dos seus negócios.
O que você vai aprender
- Como usar o provedor Terraform do Google Cloud.
- Usar o Terraform para criar instâncias e bancos de dados do Cloud Spanner.
- Usar o Terraform para modificar recursos do Cloud Spanner.
- Como usar o Terraform para excluir recursos do Cloud Spanner.
2. Configuração e requisitos
Configuração de ambiente autoguiada
Se você ainda não tem uma Conta do Google (Gmail ou Google Apps), crie uma. Faça login no Console do Google Cloud Platform ( console.cloud.google.com) e crie um projeto:


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 por meio deste codelab terá um custo baixo, mas poderá ser mais se você decidir usar mais recursos ou se deixá-los em execução. Consulte a seção "limpeza" no final deste documento.
Novos usuários do Google Cloud Platform estão qualificados para uma avaliação sem custo financeiro de US$300.
Authentication
Se ainda não tiver feito isso, instale a ferramenta de linha de comando gcloud. Depois que a gcloud for instalada, ative as credenciais padrão do aplicativo executando o seguinte comando no terminal:
$ gcloud auth application-default login
Terraform
Se você não tiver instalado o Terraform antes, instale o Terraform.
3. Provedor do Google Cloud Terraform
O provedor do Google Cloud Terraform oferece quatro recursos do Cloud Spanner:
- google_spanner_instance
- google_spanner_database
- google_spanner_instance_iam
- google_spanner_database_iam
Neste codelab, vamos criar e gerenciar instâncias e bancos de dados do Cloud Spanner.
Ambiente
No seu ambiente de desenvolvimento, crie um diretório para os arquivos de configuração do Terraform.
$ mkdir ~/terraform-spanner $ cd ~/terraform-spanner
Em seguida, crie um arquivo chamado "main.tf" com o conteúdo a seguir e substitua PROJECT_ID pelo ID do seu projeto do Google Cloud:
$ cat >> main.tf <<'EOF'
provider "google" {
project = "PROJECT_ID"
}
EOF
No restante deste codelab, vamos modificar esse arquivo e aplicar as mudanças.
4. Como criar instâncias e bancos de dados
Modifique o arquivo main.tf com o conteúdo a seguir para adicionar uma nova instância do Cloud Spanner:
provider "google" {
project = "PROJECT_ID"
}
resource "google_spanner_instance" "main" {
config = "regional-us-central1"
display_name = "first-terraform-instance"
num_nodes = 3
}
Execute o comando a seguir para aplicar as mudanças:
$ terraform apply # ... Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes # ... Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Depois que as mudanças forem aplicadas, você poderá ver a instância no Console do Google Cloud. Não é possível modificar a configuração regional depois que uma instância é criada.

Depois de criar a instância, vamos criar um banco de dados nas próximas etapas. Modifique main.tf com o conteúdo a seguir:
provider "google" {
project = "PROJECT_ID"
}
resource "google_spanner_instance" "main" {
config = "regional-us-central1"
display_name = "first-terraform-instance"
num_nodes = 3
}
resource "google_spanner_database" "database" {
instance = google_spanner_instance.main.name
name = "my-first-database"
}
Use o comando a seguir novamente para aplicar as mudanças:
$ terraform apply # ... Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
Se tudo der certo, "my-first-database" vai estar disponível na instância:

5. Como modificar uma instância
Como observado na seção anterior, nem todas as propriedades das instâncias podem ser modificadas. No entanto, é possível aumentar/diminuir o número de nós para ajustar os recursos usados pela instância. A instância criada tinha três nós. Ao modificar o arquivo main.tf, vamos aumentar o número de nós para 5:
provider "google" {
project = "PROJECT_ID"
}
resource "google_spanner_instance" "main" {
config = "regional-us-central1"
display_name = "first-terraform-instance"
num_nodes = 5
}
resource "google_spanner_database" "database" {
instance = google_spanner_instance.main.name
name = "my-first-database"
}
A próxima etapa é aplicar as mudanças:
$ terraform apply # ... Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
Quando isso acontecer, a instância vai usar cinco nós.
6. Excluir um banco de dados
É possível excluir um banco de dados permanentemente quando ele não for mais necessário. Basta remover o banco de dados de main.tf e aplicar as mudanças.
provider "google" {
project = "PROJECT_ID"
}
resource "google_spanner_instance" "main" {
config = "regional-us-central1"
display_name = "first-terraform-instance"
num_nodes = 5
}
$ terraform apply # ... Apply complete! Resources: 0 added, 0 changed, 1 destroyed.
Se a operação for concluída, o banco de dados será excluído permanentemente.
7. Excluir uma instância
É possível excluir uma instância permanentemente quando ela não for mais necessária. Basta remover a instância de main.tf e aplicar as mudanças.
provider "google" {
project = "PROJECT_ID"
}
$ terraform apply # ... Apply complete! Resources: 0 added, 0 changed, 1 destroyed.
Se a operação for concluída, a instância será excluída permanentemente.
8. Parabéns!
Você criou, modificou e excluiu recursos do Cloud Spanner usando o Terraform.
O que vimos
- Como usar o provedor Terraform do Google Cloud.
- Usar o Terraform para criar instâncias e bancos de dados do Cloud Spanner.
- Usar o Terraform para modificar recursos do Cloud Spanner.
- Como usar o Terraform para excluir recursos do Cloud Spanner.
Saiba mais
- Consulte a documentação do Google Cloud Spanner.
- Leia sobre o recurso do Terraform do Google Cloud Spanner.
- Leia sobre como definir regras do IAM para instâncias e bancos de dados.