Cloud SQL é o serviço de banco de dados relacional gerenciado do GCP. Suporta MySQL, PostgreSQL e SQL Server, com patches automáticos, backups gerenciados e alta disponibilidade regional.

Adequado para cargas OLTP: aplicações web, microsserviços e sistemas com esquema relacional e transações ACID.

Engines suportadas

EngineVersões disponíveisObservação
PostgreSQL12, 13, 14, 15, 16Mais popular para uso geral
MySQL5.7, 8.0Comum em apps web
SQL Server2017, 2019, 2022Express, Web, Standard, Enterprise

Tipos de instância

  • Enterprise: uso geral, garante SLA de 99.95% com HA
  • Enterprise Plus: failover mais rápido (~60s vs ~180s), cache de disco local, recomendado para produção crítica

Alta disponibilidade (HA)

Com HA habilitado, o Cloud SQL provisiona uma instância standby em outra zona da mesma região com failover automático:

Zona A: instância primária (ativa, aceita conexões)
Zona B: instância standby (replicação síncrona via Persistent Disk)

A instância standby não aceita conexões diretamente: não é uma read replica.

Read replicas

Réplicas de leitura escalam queries SELECT sem impactar a primária:

# Criar read replica na mesma região
gcloud sql instances create replica-leitura \
  --master-instance-name=instancia-primaria \
  --region=southamerica-east1
 
# Réplica cross-region (DR ou proximidade geográfica de leitura)
gcloud sql instances create replica-dr \
  --master-instance-name=instancia-primaria \
  --region=us-central1

Conexão

Cloud SQL Auth Proxy (recomendado)

Estabelece um túnel TLS autenticado via IAM sem expor a instância publicamente. Requer o papel roles/cloudsql.client na identidade que conecta.

# Executar o proxy localmente
./cloud-sql-proxy PROJETO:REGIAO:INSTANCIA --port=5432
 
# Conectar via psql enquanto o proxy está rodando
psql -h 127.0.0.1 -p 5432 -U usuario -d banco

IP privado (VPC)

Conexão direta pelo IP privado dentro da VPC, sem passar pela internet. Requer Private Services Access configurado na rede.

psql -h 10.x.x.x -U usuario -d banco

Cloud SQL Connectors (SDK)

Bibliotecas oficiais que gerenciam a autenticação e o túnel automaticamente, sem precisar rodar o proxy manualmente:

from google.cloud.sql.connector import Connector
import pg8000
 
connector = Connector()
conn = connector.connect(
    "projeto:regiao:instancia",
    "pg8000",
    user="usuario",
    password="senha",
    db="banco"
)
 
cursor = conn.cursor()
cursor.execute("SELECT version()")
print(cursor.fetchone())
connector.close()

Disponível para Python, Java, Go e Node.js.

Cloud Run

Cloud Run suporta conexão direta ao Cloud SQL configurando a instância via console ou YAML, sem rodar o proxy manualmente:

# cloud-run-service.yaml
spec:
  template:
    metadata:
      annotations:
        run.googleapis.com/cloudsql-instances: "projeto:regiao:instancia"

GKE

# Cloud SQL Auth Proxy como sidecar no pod
containers:
  - name: cloud-sql-proxy
    image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:2
    args:
      - "--structured-logs"
      - "projeto:regiao:instancia"

Criar instância via gcloud

gcloud sql instances create minha-instancia \
  --database-version=POSTGRES_15 \
  --tier=db-perf-optimized-N-4 \
  --region=southamerica-east1 \
  --availability-type=REGIONAL \
  --no-assign-ip \
  --network=projects/PROJETO/global/networks/minha-vpc \
  --storage-type=SSD \
  --storage-size=100GB \
  --storage-auto-increase
 
# Criar banco de dados e usuário
gcloud sql databases create meu-banco --instance=minha-instancia
gcloud sql users create usuario --instance=minha-instancia --password=SENHA

Flags de configuração

Equivalem a parâmetros do banco (ex: postgresql.conf, my.cnf):

gcloud sql instances patch minha-instancia \
  --database-flags=max_connections=500,work_mem=16384,log_min_duration_statement=1000

Backups

TipoRetenção padrãoObservação
Automático7 dias (configurável até 365)Diário, janela configurável
On-demandPermanente até deletarPara migrações ou pré-releases
PITRAté 7 diasRestaura para qualquer segundo no intervalo
# Listar backups
gcloud sql backups list --instance=minha-instancia
 
# Restaurar de backup específico
gcloud sql backups restore BACKUP_ID --restore-instance=minha-instancia
 
# Restaurar com PITR
gcloud sql instances clone minha-instancia instancia-restaurada \
  --point-in-time="2026-05-04T18:00:00Z"

Monitoramento

  • Query insights: aba no console com planos de execução, queries mais custosas e recomendações de índice
  • Cloud Monitoring: métricas database/cpu/utilization, database/memory/utilization, database/disk/utilization
  • Slow query log via flag log_min_duration_statement (PostgreSQL) ou slow_query_log=on (MySQL)

Ver também: gcp | gcp-alloydb | gcp-spanner | gcp-boas-praticas | db-tipos-de-bancos-de-dados