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
| Engine | Versões disponíveis | Observação |
|---|---|---|
| PostgreSQL | 12, 13, 14, 15, 16 | Mais popular para uso geral |
| MySQL | 5.7, 8.0 | Comum em apps web |
| SQL Server | 2017, 2019, 2022 | Express, 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-central1Conexã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 bancoIP 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 bancoCloud 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=SENHAFlags 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=1000Backups
| Tipo | Retenção padrão | Observação |
|---|---|---|
| Automático | 7 dias (configurável até 365) | Diário, janela configurável |
| On-demand | Permanente até deletar | Para migrações ou pré-releases |
| PITR | Até 7 dias | Restaura 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) ouslow_query_log=on(MySQL)
Ver também: gcp | gcp-alloydb | gcp-spanner | gcp-boas-praticas | db-tipos-de-bancos-de-dados