All cheat sheets
Cost Governancecheat sheet

Trusted Advisor — RDS Idle DB Instances

An idle RDS instance bills 24×7 even with zero connections — and a Multi-AZ SQL Server one can be $2K+/month doing nothing. You can't 'stop and forget' (7-day auto-restart), so the durable fix is snapshot-and-delete: ~97% cheaper, data preserved.

Last reviewed: July 14, 2026

TL;DR: An idle RDS instance is pricier than an idle EC2 instance, harder to verify as truly idle, and scarier to delete — so teams freeze on it, and it bills 24×7 with zero connections. You can't "stop and forget" (RDS auto-restarts a stopped instance after 7 days, and Multi-AZ can't be stopped at all), so the durable fix is snapshot-and-delete: the final snapshot preserves the data at ~3% of the live cost, restorable in minutes. A Multi-AZ SQL Server instance doing nothing can be a $2,000+/month single-line win.

The numbers

  • Flagged after 7 consecutive days of zero connections — conservative; many flagged instances have been idle for months.
  • Idle-cost samples (Multi-AZ): db.t3.medium MySQL + 100 GB ≈ $140/mo; db.m5.large PostgreSQL + 200 GB ≈ $340/mo; db.r5.xlarge + 500 GB io1 ≈ $1,100/mo; db.r5.2xlarge SQL Server Std ≈ $2,200/mo (license fees dominate; Multi-AZ ≈ doubles instance cost).
  • Snapshot-and-delete math: running db.m5.large + 200 GB ≈ $340/mo vs a 200 GB snapshot ≈ $10/mo (~97% cut), restorable to any size/type/region.
  • Field examples: a SaaS retired 8 idle instances (incl. SQL Server) for $3,100/mo ($37K/yr); a forgotten db.r5.4xlarge SQL Server Enterprise = $5,400/mo → snapshot at $60/mo ($64K/yr saved).

Do this

  1. Sort the finding by estimated savings descending — Multi-AZ and commercial-engine (SQL Server/Oracle license-included) instances are where the dollars are.
  2. Verify idle across four sources: CloudWatch DatabaseConnections over 30 and 7 days, IaC/app-config grep for the endpoint, Route 53, and Secrets Manager (a secret referencing it means someone expects to connect).
  3. Snapshot-and-delete as the default — the console's "final snapshot" on delete becomes a durable manual snapshot; name it <db>-final-<date> and set a 90-day (or policy) reminder to delete the snapshot too.
  4. For short-term doubt, stop first (single-AZ only, 7-day window) and watch for connection errors; convert a Multi-AZ instance to single-AZ first (halves cost immediately, then it's stoppable).
  5. Replace fake "Multi-AZ DR" with real DR — a same-region Multi-AZ standby isn't regional DR; a cross-region snapshot copy costs ~$20–100/mo vs $700–3,000/mo for the standby.

Gotchas

  • "Stopped" isn't durable for RDS — auto-restart after 7 days (you keep paying storage meanwhile), and Multi-AZ can't be stopped at all. The only lasting stop is snapshot-and-delete.
  • Automated backups vanish on deletion — only the manual/final snapshot survives; take one to capture current state.
  • Read replicas, deletion protection, and RI commitments all complicate deletion — you can't delete a primary with active replicas, must clear the protection flag, and an RI keeps billing after the instance is gone.
  • RDS Proxy pools connections — a proxy-fronted DB can show low DatabaseConnections while genuinely in use; check the proxy metrics.
  • Some "your" RDS instances are AWS-service-managed (QuickSight, etc.) — check tags before deleting.

Skip this if

Run this audit with your AI assistant

Paste this into Claude, ChatGPT, or any agent that can run the AWS CLI with read-only credentials. It audits your account for exactly the waste this sheet describes — and changes nothing.

You are auditing an AWS account for idle RDS DB instances. Use the AWS
CLI with READ-ONLY credentials. Do not create, modify, or delete
anything — report findings and recommended (unapplied) fixes only.

1. Inventory: aws rds describe-db-instances — engine, class, Multi-AZ,
   storage/type/IOPS, license model, deletion protection, read replicas,
   and RI coverage (describe-reserved-db-instances).
2. Idle test: pull CloudWatch DatabaseConnections over 30 days AND 7 days
   (catch monthly batch jobs); flag instances at flat zero. Note RDS
   Proxy-fronted DBs pool connections at the proxy (check proxy metrics).
3. Verify-before-delete: search IaC + app configs + Secrets Manager for
   the endpoint; check Route 53; confirm no active read replicas; confirm
   it isn't AWS-service-managed.
4. Recommend action: snapshot-and-delete (durable), or convert Multi-AZ ->
   single-AZ then stop (7-day max) for short-term doubt. Cross-region
   snapshot copy beats a Multi-AZ "DR" standby. Flag SQL Server/Oracle
   license-included (highest $).

Report a table: instance | engine | Multi-AZ | 30-day connections | est.
$/mo | RI/replica/managed flags | recommended action. Change nothing.
Works with any assistant that can run shell commands.

Want the guided version?

The Trusted Advisor — RDS Idle DB Instances walkthrough covers this topic interactively — it asks about your setup, branches to what’s relevant, and quizzes you on the tricky parts. Free and anonymous.

Start the walkthrough