Post-Upgrade Checklist
Common Steps
Verify upgrade completed
aws rds describe-db-clusters --db-cluster-identifier {cluster} \ --query "DBClusters[0].{Engine:Engine,EngineVersion:EngineVersion,Status:Status}" \ --output json --region {region}Preserve the rollback window — do NOT delete pre-upgrade snapshots immediately. Major version upgrades are one-way in-place. Rollback requires restoring from a snapshot or PITR, and both restore the old major version:
- Any pre-upgrade manual snapshot restores to the engine version it was taken on (e.g., an Aurora PostgreSQL 15.4 snapshot restores to 15.4 — not to a post-upgrade 16.4).
- PITR to any time before the upgrade completed restores the pre-upgrade major version, not the new one.
- After the upgrade, Aurora cannot restore backward-in-time into the new major version; that timeline starts at the upgrade's completion.
Keep the pre-upgrade manual snapshot for at least 7–14 days of stable production traffic (longer for regulated workloads) before deleting it. Deleting it early forecloses the cheapest rollback path. Document the snapshot identifier and retain-until date in your change record.
Check performance discrepancies — Compare CloudWatch metrics against baseline: CPUUtilization, DatabaseConnections, ReadLatency, WriteLatency, FreeableMemory, BufferCacheHitRatio, DMLLatency, SelectLatency. Use Performance Insights to compare database load.
Compare EXPLAIN plans for critical queries. Look for: different join strategies, missing index usage, full table scans.
EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON) SELECT ...;
Monitor CloudWatch 24-72 hours — Watch: CPUUtilization, FreeableMemory, DatabaseConnections, ReadLatency, WriteLatency, AuroraReplicaLag, Deadlocks, LoginFailures.
Validate application connectivity — connections, pooling, SSL/TLS.
Verify parameter group applied correctly:
aws rds describe-db-cluster-parameters --db-cluster-parameter-group-name {new_pg} \ --query "Parameters[?Source=='user'].{Name:ParameterName,Value:ParameterValue}" \ --output table --region {region}Update statistics — run
ANALYZE(Aurora autovacuum runs it too, but a one-time manual pass post-upgrade is insurance).Check error logs
aws rds describe-events --source-identifier {cluster} --source-type db-cluster --duration 1440 --region {region}
Aurora PostgreSQL-Specific
Verify extensions working —
SELECT extname, extversion FROM pg_extension;Update if needed:ALTER EXTENSION {name} UPDATE;REINDEX hash indexes if upgrading from < PG 10.
Verify pg_stat_statements collecting data:
SELECT calls, query FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 10;Run VACUUM ANALYZE on large tables to update planner statistics.