Reducing RDS Costs: Aurora and Read Replicas
Right-size RDS with Aurora Serverless and replicas.
RDS Cost Optimization Strategies
Amazon RDS is often the single largest line item after EC2. Database instances run 24/7, storage costs accumulate, and backup retention adds up. Here are proven strategies to cut RDS costs without sacrificing performance or availability.
Strategy 1: Right-Size RDS Instances
Most RDS instances are over-provisioned. Check these CloudWatch metrics to identify right-sizing opportunities:
- CPUUtilization — If p95 is below 30%, downsize the instance class
- FreeableMemory — If consistently above 50% of total memory, you have headroom
- DatabaseConnections — Peak connections determine the minimum instance size
Strategy 2: Aurora Serverless v2
For variable workloads, Aurora Serverless v2 scales capacity in 0.5 ACU increments (1 ACU ≈ 2 GB RAM). You pay only for the capacity you use, down to 0.5 ACU during idle periods.
Best for: Dev/test databases, applications with unpredictable traffic, overnight batch processing windows.
Cost example: A database that peaks at 8 ACUs for 4 hours/day and idles at 1 ACU for 20 hours costs ~60% less than a provisioned db.r6g.xlarge running 24/7.
Strategy 3: Read Replicas for Read-Heavy Workloads
Instead of scaling up your primary instance, add read replicas to handle SELECT queries:
- Route read-heavy analytics queries to replicas
- Use Aurora's reader endpoint for automatic load balancing across replicas
- Use smaller instance types for replicas if they handle lighter workloads
Strategy 4: Reserved Instances for RDS
RDS Reserved Instances offer 30-60% savings over On-Demand pricing. Since databases are typically long-running, they're excellent candidates for 1-year or 3-year commitments.
Strategy 5: Storage and Backup Optimization
- Use gp3 storage instead of io1 unless you need guaranteed high IOPS
- Reduce backup retention to the minimum required (7 days for dev, 35 for production)
- Delete manual snapshots that are no longer needed
- Enable storage auto-scaling to avoid over-provisioning upfront
Real-world result: Moving a production PostgreSQL workload from db.r5.2xlarge to Aurora Serverless v2 with read replicas reduced monthly RDS costs from $2,100 to $780.