PostgreSQL Field Guide

Cloud PG production checklist

Replace feature checkboxes with verifiable questions and drills

1. Compatibility inventory

  • What are the PostgreSQL major version, patch cadence, and end-of-support date?
  • Are every required extension and its exact version present in pg_extension? Is upgrade automatic, manual, or migration-based?
  • Which settings are immutable? Is shared_preload_libraries available?
  • Are logical replication, slots, FDWs, event triggers, and required authentication supported?
  • Which catalog, statistics, and superuser operations have platform-specific replacements?
  • Have drivers, ORM, migrations, and backup tools passed the real delivery pipeline?

Store the answers as a machine-readable manifest bound to service SKU, region, engine version, and verification date.

2. Availability and recovery

ExerciseExample acceptance condition
Forced failoverClients reconnect inside budget; failed transactions return recognizable SQLSTATE; no silent partial success
PITRRestore a new instance to the target time; verify rows, constraints, roles, and extensions; measure RTO
Accidental deletionDocument separate whole-instance, database, and table-level paths and durations
Region failureDNS, keys, object-storage backups, and application compute do not share the database failure domain
Backup exportRestore a usable copy outside the provider account

Automatic failover still breaks connections

Applications need connection timeouts, transaction-level retries, and idempotency keys. Do not replay a write that may have committed unless a business idempotency key can confirm the outcome.

3. Connections and elasticity

Budget connections across every application replica, worker, migration tool, BI client, and agent. Prefer a controlled pool for serverless/agent traffic, while confirming:

  • whether transaction pooling supports session state, temporary tables, LISTEN/NOTIFY, or prepared statements;
  • whether scale-down, suspend, or failover changes endpoints or TLS certificates;
  • which of statement_timeout, idle_in_transaction_session_timeout, and client timeouts fires first;
  • whether bursts queue in the application instead of becoming a direct PostgreSQL connection storm.

4. Cost model

Beyond compute and storage, estimate IOPS, backups, cross-zone/region traffic, replicas, logs, monitoring, proxies, PITR, snapshot export, and support. For AI, separate embedding, index rebuild, vector storage, retrieval, and reranking costs.

5. Portability

Quarterly—or before a major upgrade—run:

pg_dump --format=custom --no-owner --no-acl "$DATABASE_URL" > app.dump
createdb portability_restore
pg_restore --exit-on-error --no-owner --no-acl \
  --dbname=portability_restore app.dump

This checks logical portability; it does not replace provider PITR. After restore, verify extensions, roles/grants, large objects, sequences, row counts, constraints, critical results, and query plans.

Launch evidence pack

  • service, region, SKU, engine, and extension version manifest;
  • RPO, RTO, connection budget, and capacity model;
  • failover, PITR, accidental-delete, and off-platform restore reports;
  • encryption, network, role, RLS, and key-rotation records;
  • engine/extension upgrade and provider-exit runbooks;
  • latency, error, WAL, vacuum, storage, and cost data under representative load.

Last updated on

On this page