Nurture TechnologiesNurture Tech
DevOps12 min·July 24, 2026

RDS Costs Increased DramaticallyCommon Causes

AWS RDSAurora ServerlessAWS CLICost ExplorerCloudWatch

Your RDS bill jumped 100-300% with no change in query volume. Trace the increase to Multi-AZ, storage autoscaling, backup retention policy changes, Aurora Serverless ACU scaling, Enhanced Monitoring, or accumulated manual snapshots.

Problem Summary

RDS costs are notoriously easy to accidentally double or triple because several features that sound minor Multi-AZ, Enhanced Monitoring, Performance Insights storage, storage autoscaling each have significant cost implications. Unlike EC2 where you can see the instances, RDS cost changes are often invisible in the console unless you know exactly where to look. A single checkbox change in the AWS console can permanently double your database bill.

Symptoms

  • Cost Explorer shows RDS spend doubled or tripled with no change in database query volume
  • Storage line item in the RDS bill increased substantially beyond your database size growth
  • A new 'RDS Multi-AZ' usage type appears in Cost Explorer that was not present before
  • Aurora Serverless costs are much higher than expected based on your workload
  • Backup storage charges are higher than the size of your database
  • Enhanced Monitoring line item appeared recently in the bill
  • RDS snapshot count in the console is much higher than expected
  • Instance class shows a larger type than you intended to provision

Business Impact

RDS is the most cost-sensitive AWS service for most application teams because databases cannot be trivially scaled down without migration effort. An accidental Multi-AZ enable on a db.r5.4xlarge doubles the instance cost from roughly $1,000/month to $2,000/month permanently until you disable it. Unlike EC2, you cannot simply terminate an RDS instance to save money modifications require maintenance windows and can cause brief interruptions.

Root Cause

RDS cost spikes most commonly originate from configuration changes rather than traffic growth: Multi-AZ being enabled (doubles instance cost), storage autoscaling triggering during a data import (storage only scales up, never down), backup retention increased from 7 to 35 days (5x more backup storage), Aurora Serverless v2 ACU minimum being set too high, CloudWatch Enhanced Monitoring or Performance Insights long-term storage enabled, or manual snapshots accumulating without any deletion lifecycle.

RDS storage autoscaling only scales UP, never down. If storage autoscaled from 100 GB to 500 GB during a large data import, you will pay for 500 GB of allocated storage permanently even after deleting the imported data. The only way to reduce allocated storage is to snapshot and restore to a new instance.

Diagnosis

Step 1 Inventory All RDS Instances and Their Configuration

Get a complete picture of every RDS instance, its class, Multi-AZ status, storage size, and backup retention. Any of these fields changing unexpectedly is a cost driver.

$aws rds describe-db-instances --query 'DBInstances[*].{ID:DBInstanceIdentifier,Class:DBInstanceClass,MultiAZ:MultiAZ,Storage:AllocatedStorage,StorageType:StorageType,BackupRetention:BackupRetentionPeriod,Status:DBInstanceStatus,Engine:Engine}' --output table

Step 2 Check for Accidental Multi-AZ Enable

Multi-AZ doubles the instance cost because AWS runs a synchronous standby replica in another AZ. If MultiAZ is true on instances you expected to be single-AZ, this is likely the cause of the cost increase.

$aws rds describe-db-instances --query 'DBInstances[?MultiAZ==`true`].[DBInstanceIdentifier,DBInstanceClass,MultiAZ]' --output table

To disable Multi-AZ (triggers a brief failover): go to RDS Console → your instance → Modify → Availability & durability → Do not create a standby instance. Apply immediately (or during next maintenance window).

Disabling Multi-AZ on production databases removes your HA protection. Only do this for non-critical databases. For production, keep Multi-AZ and find cost savings elsewhere (instance right-sizing, Reserved Instances).

Step 3 Audit Storage Autoscaling and Allocated Storage

Check the current allocated storage versus how much storage your database is actually using. A large gap indicates storage autoscaling was triggered and the allocated size grew beyond actual needs.

$aws rds describe-db-instances --query 'DBInstances[*].[DBInstanceIdentifier,AllocatedStorage,MaxAllocatedStorage]' --output table
$aws cloudwatch get-metric-statistics --namespace AWS/RDS --metric-name FreeStorageSpace --dimensions Name=DBInstanceIdentifier,Value=<DB_INSTANCE_ID> --start-time 2026-07-01T00:00:00Z --end-time 2026-07-24T00:00:00Z --period 86400 --statistics Minimum --output table

Step 4 Investigate Aurora Serverless ACU Scaling

Aurora Serverless v2 charges per ACU-hour. If your minimum ACU is set to 8 and you have 3 instances in a cluster (writer + 2 readers), you are paying for at least 24 ACUs continuously at $0.12/ACU-hr = $2,073/month minimum floor, even with no queries.

$aws rds describe-db-clusters --query 'DBClusters[?EngineMode==`provisioned`].[DBClusterIdentifier,ServerlessV2ScalingConfiguration]' --output table
check-aurora-acu.sh
#!/bin/bash
# Check ACU utilization over the last 7 days
aws cloudwatch get-metric-statistics   --namespace AWS/RDS   --metric-name ServerlessDatabaseCapacity   --dimensions Name=DBClusterIdentifier,Value=${CLUSTER_ID}   --start-time "$(date -u -d '7 days ago' +%Y-%m-%dT%H:%M:%SZ)"   --end-time "$(date -u +%Y-%m-%dT%H:%M:%SZ)"   --period 3600   --statistics Average,Maximum   --output table

Step 5 Count and Audit Manual Snapshots

Automated backups are free within the backup retention window but manual snapshots are charged indefinitely at $0.095/GB/month. Teams that create manual snapshots before migrations and never clean them up accumulate hundreds of GB of snapshot storage.

$aws rds describe-db-snapshots --snapshot-type manual --query 'DBSnapshots[*].[DBSnapshotIdentifier,DBInstanceIdentifier,SnapshotCreateTime,AllocatedStorage]' --output table | sort -k3

Production Failure Scenarios

Scenario 1 Enhanced Monitoring Enabled on Every Instance

CloudWatch Enhanced Monitoring at 1-second granularity costs $0.014 per instance-hour in additional CloudWatch agent costs, plus the log ingestion charges. For 10 RDS instances that is an additional ~$100/month. Check: aws rds describe-db-instances --query 'DBInstances[*].[DBInstanceIdentifier,MonitoringInterval]' a MonitoringInterval of 1 or 5 seconds enables Enhanced Monitoring.

Scenario 2 Backup Retention Increased by Compliance Policy

A compliance team updated the RDS backup retention from 7 days to 35 days across all instances. RDS automated backup storage beyond the instance size is charged at $0.095/GB/month. A 500 GB database with 35 days of retention vs 7 days generates 5x more backup storage cost.

Scenario 3 Instance Class Upgraded and Not Reverted After Load Test

Before a traffic event, the team upgraded from db.r5.2xlarge to db.r5.4xlarge. The event passed, but the downgrade was forgotten. The difference is $0.96/hr vs $1.92/hr $691/month in extra spend for the production instance, doubled again if Multi-AZ is enabled.

Prevention Checklist

  • Set MaxAllocatedStorage on storage autoscaling to a reasonable ceiling do not leave it at unlimited
  • Audit Multi-AZ status quarterly only enable it on instances where downtime cost exceeds the HA premium
  • Set automated snapshot lifecycle: delete manual snapshots older than 30 days with a Lambda cron job
  • Configure backup retention at the minimum required by your SLA not the maximum AWS allows
  • Review Aurora Serverless v2 minimum ACU settings each ACU-hour costs $0.12 and minimums are always-on costs
  • Set Enhanced Monitoring interval to 60 seconds on non-production instances (or disable entirely on dev)
  • Purchase RDS Reserved Instances for stable production databases typically 40-60% savings over on-demand
  • Use Performance Insights with the free 7-day retention unless you have a specific need for longer retention
  • After any performance-related instance class upgrade, add a calendar reminder to evaluate downgrade after 2 weeks

Resolution Summary

Check Multi-AZ status first it is the most common accidental cost doubler. Then review allocated storage vs actual usage for autoscaling events. Check backup retention period and manual snapshot count. For Aurora Serverless, examine ACU minimum settings and recent scaling history. Each of these is a configuration setting that can be changed without data migration.

Lessons Learned

  • Multi-AZ is a checkbox in the console but a 100% cost increase document the deliberate decision to enable or disable it
  • Storage autoscaling is one-way: design your database storage allocation with growth in mind from the start
  • Manual snapshots are permanent by default every team needs a snapshot lifecycle policy
  • Aurora Serverless minimum ACU is effectively a reserved compute floor, not a free baseline
  • RDS cost changes are configuration changes first, traffic second always check config before traffic when investigating

Conclusion

RDS cost management requires understanding that most of the cost levers are configuration checkboxes rather than usage metrics. Unlike EC2 where you can count instances, RDS hides its cost multipliers in feature settings that are easy to enable and hard to notice. Build a monthly RDS configuration audit into your FinOps routine: check Multi-AZ, storage autoscaling triggers, backup retention, snapshot counts, and Enhanced Monitoring on every instance. That 20-minute check pays for itself within the first month.

Nurture Technologies

NEED HELP WITH YOUR STACK?

Nurture Technologies builds and maintains production-quality software for startups and businesses. If engineering problems are slowing you down, our team can help.

Talk to our team →
FAQ

FREQUENTLY ASKED QUESTIONS

How much does enabling Multi-AZ increase my RDS cost?+

Multi-AZ exactly doubles the instance compute cost because AWS runs a fully provisioned standby replica. Storage charges do not double only the instance-hours. So a $500/month compute instance becomes $1,000/month.

Can I reduce RDS allocated storage after storage autoscaling triggered?+

No. AWS does not allow you to reduce RDS allocated storage in place. The only path is to create a snapshot, restore it to a new instance with the smaller storage size, and promote the new instance.

What is Aurora Serverless v2 ACU and how does pricing work?+

An ACU (Aurora Capacity Unit) is approximately 2 GB RAM and proportional CPU. Aurora Serverless v2 charges $0.12 per ACU-hour. With a minimum of 2 ACUs on a cluster writer, you pay at least $0.24/hr = $175/month minimum even with zero queries.

Are RDS automated backups free?+

RDS automated backup storage up to 100% of your total database storage is free. Storage beyond that is charged at $0.095/GB/month. With a 30-day retention period and active write load, you typically exceed the free tier.

How do I delete old RDS manual snapshots?+

aws rds delete-db-snapshot --db-snapshot-identifier <snapshot-id>. For bulk deletion, list snapshots older than a date with describe-db-snapshots and pipe to delete. Always verify the snapshot is not the only backup of important data.

Does Performance Insights cost extra?+

Performance Insights free tier includes 7 days of retention at no cost. Long-term retention (beyond 7 days, up to 2 years) costs $0.02 per vCPU per month. For a db.r5.8xlarge with 32 vCPUs, long-term retention adds $0.64/month usually worth it.

How do I right-size an RDS instance?+

Check CloudWatch metrics for CPUUtilization (should average 20-40% for right-sized), FreeableMemory (should stay above 10% of total), and DatabaseConnections. Compute Optimizer now supports RDS right-sizing recommendations.

What is the cheapest way to run a high-availability RDS setup?+

For truly cost-optimized HA, consider Aurora with a single writer and zero readers, with failover enabled Aurora's cluster storage is replicated across 3 AZs regardless, so you get storage HA without paying for Multi-AZ instance cost.

How do Reserved Instances work for RDS?+

RDS Reserved Instances are commitments to pay for a specific instance class in a specific region for 1 or 3 years. They offer 40-60% savings over on-demand. Purchase them for stable, long-running production databases where the instance class is unlikely to change.

What Enhanced Monitoring interval should I use?+

60 seconds is sufficient for most production databases and minimizes CloudWatch agent costs. Use 1-5 second intervals only when actively debugging a performance issue. Always reset to 60 seconds after the investigation.