Google Cloud Cheatsheet

Cloud SQL

Use this Google Cloud reference while you build software engineering projects, review code for technical interview prep, or polish examples for a software engineer resume.

Create an Instance

# PostgreSQL
gcloud sql instances create my-pg \
  --database-version=POSTGRES_16 \
  --tier=db-f1-micro \
  --region=us-central1

# MySQL
gcloud sql instances create my-mysql \
  --database-version=MYSQL_8_0 \
  --tier=db-n1-standard-2 \
  --region=us-central1

# SQL Server
gcloud sql instances create my-sqlserver \
  --database-version=SQLSERVER_2022_STANDARD \
  --tier=db-custom-4-15360 \
  --region=us-central1

# Production-grade PostgreSQL with HA
gcloud sql instances create prod-pg \
  --database-version=POSTGRES_16 \
  --tier=db-n1-standard-4 \
  --region=us-central1 \
  --availability-type=REGIONAL \
  --storage-type=SSD \
  --storage-size=100GB \
  --storage-auto-increase \
  --backup \
  --backup-start-time=02:00 \
  --enable-point-in-time-recovery
# (PITR flag: --enable-point-in-time-recovery for PostgreSQL; --enable-bin-log for MySQL)

Machine Tiers

TiervCPUsRAMUse case
db-f1-microShared0.6 GBDev/test only
db-g1-smallShared1.7 GBLight workloads
db-n1-standard-113.75 GBSmall OLTP
db-n1-standard-4415 GBMedium prod
db-n1-highmem-8852 GBMemory-heavy
db-custom-N-MNM MBAny combo

Instance Management

# List instances
gcloud sql instances list

# Describe an instance
gcloud sql instances describe my-pg

# Stop / start
gcloud sql instances patch my-pg --activation-policy=NEVER    # stop
gcloud sql instances patch my-pg --activation-policy=ALWAYS   # start

# Resize tier
gcloud sql instances patch my-pg --tier=db-n1-standard-4

# Delete (irreversible!)
gcloud sql instances delete my-pg

Databases & Users

# Create a database
gcloud sql databases create my-db --instance=my-pg

# List databases
gcloud sql databases list --instance=my-pg

# Delete a database
gcloud sql databases delete my-db --instance=my-pg

# Create a user (PostgreSQL)
gcloud sql users create alice \
  --instance=my-pg \
  --password=s3cretP@ss

# Set/change password
gcloud sql users set-password alice \
  --instance=my-pg \
  --password=newP@ss

# List users
gcloud sql users list --instance=my-pg

# Delete a user
gcloud sql users delete alice --instance=my-pg

Connecting

Cloud SQL Auth Proxy (recommended for local dev)

# Download the proxy
curl -o cloud-sql-proxy \
  https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.13.0/cloud-sql-proxy.linux.amd64
chmod +x cloud-sql-proxy

# Start proxy (listens on localhost:5432)
./cloud-sql-proxy my-project:us-central1:my-pg \
  --credentials-file=key.json

# Then connect normally
psql "host=127.0.0.1 port=5432 dbname=my-db user=alice password=s3cretP@ss"

Connection String Examples

# PostgreSQL (from Cloud Run / Compute Engine)
postgres://alice:s3cretP@ss@/my-db?host=/cloudsql/my-project:us-central1:my-pg

# MySQL
mysql://alice:s3cretP@ss@unix(/cloudsql/my-project:us-central1:my-mysql)/my-db

# Using Public IP (must allowlist the IP)
psql -h PUBLIC_IP -U alice -d my-db

Authorized Networks

# Allow a specific IP to connect via public IP
gcloud sql instances patch my-pg \
  --authorized-networks=203.0.113.0/32

# Remove authorized networks
gcloud sql instances patch my-pg \
  --clear-authorized-networks

Private IP (recommended for prod)

# Enable Private IP (requires Service Networking API)
gcloud sql instances patch my-pg \
  --network=projects/my-project/global/networks/my-vpc \
  --no-assign-ip

Backups & Recovery

# Create an on-demand backup
gcloud sql backups create --instance=my-pg

# List backups
gcloud sql backups list --instance=my-pg

# Restore from backup
gcloud sql backups restore BACKUP_ID \
  --restore-instance=my-pg

# Restore to a point in time (requires PITR: point-in-time-recovery on Postgres, bin-log on MySQL)
gcloud sql instances clone my-pg my-pg-restored \
  --point-in-time="2025-06-10T14:30:00Z"

# Export to Cloud Storage (dump)
gcloud sql export sql my-pg gs://my-bucket/dump.sql.gz \
  --database=my-db

# Import from Cloud Storage
gcloud sql import sql my-pg gs://my-bucket/dump.sql.gz \
  --database=my-db

High Availability & Replicas

# Enable HA (regional — synchronous standby in another zone)
gcloud sql instances patch my-pg \
  --availability-type=REGIONAL

# Create a read replica
gcloud sql instances create my-pg-replica \
  --master-instance-name=my-pg \
  --region=us-central1

# Promote replica to standalone instance (failover)
gcloud sql instances promote-replica my-pg-replica

# List replicas
gcloud sql instances list --filter="masterInstanceName=my-pg"

Maintenance & Flags

# Set a database flag
gcloud sql instances patch my-pg \
  --database-flags=log_min_duration_statement=1000,max_connections=200

# Set maintenance window (Sunday 02:00 UTC)
gcloud sql instances patch my-pg \
  --maintenance-window-day=SUN \
  --maintenance-window-hour=2

# Check current flags
gcloud sql instances describe my-pg --format="value(settings.databaseFlags)"