Managed Database Comparison
AWS RDS vs Aurora: Which Managed Database Is Right for You?
Aurora is not simply "better RDS" — understanding the I/O cost model, storage architecture differences, and HA characteristics determines which service fits your workload.
Amazon RDS and Aurora are both managed relational database services, but they are architecturally distinct products with different cost models, availability characteristics, and performance profiles. Aurora is often described as “RDS but faster” — that framing misses the nuance that matters for production architecture decisions.
This comparison focuses on the technical and economic differences that affect real workloads, including Aurora’s I/O pricing model that surprises teams when their first monthly bill arrives.
Architecture Differences
The most important difference between RDS and Aurora is the storage layer.
Standard RDS uses Amazon EBS volumes attached to the database instance. Replication (for Multi-AZ deployments) is handled at the storage level using synchronous EBS mirroring to a standby instance in a second Availability Zone. The storage grows in fixed increments and is bound to the instance’s EBS configuration.
Aurora uses a purpose-built distributed storage system that is decoupled from the compute layer. Aurora storage automatically replicates data 6 ways across 3 Availability Zones — this happens at the storage level, not the instance level. Aurora storage auto-scales in 10 GB increments up to 128 TiB. The compute (instances) and storage are independently scalable.
| Characteristic | RDS (Provisioned) | Aurora |
|---|---|---|
| Storage backend | EBS volumes | Distributed Aurora storage |
| Replication | Multi-AZ EBS mirror (optional) | Always 6-way, 3-AZ (built-in) |
| Storage scaling | Manual or auto in 10 GB increments | Auto-scales, up to 128 TiB |
| Read replicas | Up to 5 (separate storage per replica) | Up to 15 (shared storage volume) |
| Failover time | ~30-120 seconds (Multi-AZ) | ~30 seconds (Aurora Replica) |
| Storage cost | Based on EBS gp3/io1 pricing | Per-GB-month + I/O charges |
| I/O charges | No per-I/O charge | Yes (Aurora Standard) / No (I/O-Optimized) |
| Engines supported | MySQL, PostgreSQL, MariaDB, Oracle, SQL Server | MySQL-compatible, PostgreSQL-compatible |
Performance Comparison
Aurora’s distributed storage architecture provides concrete advantages for specific workload patterns:
- Read scaling: Aurora Replicas share the same underlying storage as the primary. Replication lag is typically under 100ms (often milliseconds). RDS read replicas replicate via binary log replication, which introduces higher lag under write load.
- Failover speed: Aurora fails over to a read replica in ~30 seconds because the replica is already attached to the same storage. RDS Multi-AZ failover involves remounting EBS to the standby, typically taking 30–120 seconds.
- Crash recovery: Aurora’s distributed storage architecture means the database does not need to replay a redo log after a crash. Recovery is near-instant.
For write-heavy single-instance workloads, RDS and Aurora perform similarly. The Aurora storage layer’s 6-way write amplification means more I/O operations per write — which is why the I/O cost model matters.
Cost Breakdown
This is where Aurora’s real cost differs from marketing comparisons.
Aurora Standard (per-I/O pricing):
- Instance: ~20% premium over equivalent RDS instance
- Storage: $0.10/GB-month
- I/O requests: $0.20 per million requests
- Backup storage: $0.021/GB-month (beyond free tier)
Aurora I/O-Optimized (no per-I/O charge):
- Instance: ~30-40% premium over equivalent RDS instance
- Storage: $0.225/GB-month
- I/O requests: Included (no charge)
- Backup storage: $0.021/GB-month
RDS Provisioned (PostgreSQL/MySQL, gp3 storage):
- Instance: Baseline pricing
- Storage: $0.115/GB-month (gp3)
- I/O requests: No per-I/O charge
- Backup storage: $0.095/GB-month (beyond free tier)
Estimated monthly cost — db.r6g.large, 100 GB storage, us-east-1:
| Configuration | Instance | Storage | I/O (500M/mo) | Total |
|---|---|---|---|---|
| RDS Multi-AZ | ~$185 | $23 | $0 | ~$208 |
| Aurora Standard | ~$222 | $10 | $100 | ~$332 |
| Aurora I/O-Optimized | ~$296 | $22.50 | $0 | ~$319 |
At 500 million I/O operations per month, Aurora Standard is more expensive than both RDS and Aurora I/O-Optimized. At 1 billion+ I/O operations per month, Aurora I/O-Optimized starts to deliver savings versus Aurora Standard, and its higher instance cost may still be less than RDS Multi-AZ for highly available deployments.
High-Availability Features
| Feature | RDS Multi-AZ | Aurora |
|---|---|---|
| Automatic failover | Yes (~30-120s) | Yes (~30s with replica) |
| Read replicas | Up to 5, separate storage | Up to 15, shared storage |
| Cross-region replicas | Read replicas | Aurora Global Database |
| RPO | Near-zero (synchronous) | Near-zero (6-way synchronous) |
| RTO | ~30-120 seconds | ~30 seconds |
| Multi-region active-active | No native support | Aurora Global Database (< 1s RPO) |
| Serverless option | No | Aurora Serverless v2 |
Aurora Global Database is a differentiated feature with no direct RDS equivalent — it replicates data to up to 5 secondary regions with typical replication lag under 1 second, enabling near-zero RPO cross-region disaster recovery and read traffic distribution to geographically distributed users.
When RDS Is the Right Choice
RDS is the appropriate choice when the workload does not justify Aurora’s cost or complexity premium.
Choose RDS when:
- Your workload is development, testing, or early-stage production (Aurora’s minimum cost is higher)
- You need Oracle or SQL Server (Aurora does not support these engines)
- Traffic and I/O volumes are low — Aurora Standard’s per-I/O charges add cost without proportional benefit
- You want the simplest pricing model without I/O charges
- A single-AZ deployment is acceptable and Multi-AZ cost is not justified
- You need a specific engine version not yet available in Aurora (Aurora PostgreSQL versions lag slightly)
When Aurora Is the Right Choice
Choose Aurora when:
- High availability with fast failover is a requirement (the 30-second vs 2-minute failover difference matters)
- You need more than 5 read replicas for read scaling
- Cross-region replication with sub-second RPO is required (Global Database)
- I/O workloads are high enough to justify the storage architecture benefits
- You want storage to auto-scale without manual provisioning
- Aurora Serverless v2 is attractive for variable workload patterns
Migration Path from RDS to Aurora
Aurora is wire-compatible with MySQL and PostgreSQL, so most application migrations are straightforward. AWS provides two migration paths: a snapshot restore (takes your RDS snapshot and restores it into Aurora format) and AWS Database Migration Service for live migrations with minimal downtime. Plan for testing Aurora’s parameter group differences and I/O cost modeling before migrating production workloads.
Selecting the right managed database service requires modeling your actual I/O patterns and availability requirements. Our team helps AWS customers right-size their database infrastructure. Contact us to discuss which managed database configuration fits your workload and budget.
Frequently Asked Questions
Is Aurora always faster than RDS?
Not always. Aurora uses a distributed storage system with 6-way replication across 3 Availability Zones, which provides higher durability and typically faster recovery from failures. For read-heavy workloads with Aurora Replicas, Aurora can deliver significantly higher throughput. However, for simple single-instance write-heavy workloads, the performance difference is often marginal. Aurora''s distributed storage also means higher I/O amplification — each write is written to 6 storage nodes, which generates more I/O operations than a standard RDS write to a single EBS volume.
Is Aurora more expensive than RDS?
Aurora instance pricing is approximately 20% higher than equivalent RDS instances. However, the bigger cost variable is Aurora''s I/O pricing on Aurora Standard: $0.20 per million I/O requests. For read-heavy workloads hitting millions of I/O operations per hour, this can add hundreds of dollars per month beyond instance costs. Aurora I/O-Optimized removes the I/O charge (replacing it with a 30-40% higher instance price) and is typically the better choice above ~1 billion I/Os per month. For low-traffic workloads, RDS is almost always cheaper.
Does Aurora support PostgreSQL?
Yes. Aurora supports two engines: Aurora MySQL (compatible with MySQL 5.7 and 8.0) and Aurora PostgreSQL (compatible with PostgreSQL 13 through 16). Aurora PostgreSQL is wire-compatible with standard PostgreSQL — most applications connect without any code changes. The trade-off is that Aurora PostgreSQL may lag behind the latest PostgreSQL minor version by a few months as AWS validates compatibility. Aurora also supports PostgreSQL-specific features like logical replication and extensions.
When should I use RDS instead of Aurora?
RDS is the right choice when: your workload is small or development-stage and Aurora''s minimum cost is too high; you need specific database engines Aurora does not support (Oracle, SQL Server, or MariaDB); you want simpler, more predictable pricing without per-I/O charges; you are running a single-AZ deployment where multi-AZ high availability is not required; or you need a specific RDS feature not yet available in Aurora, such as certain engine versions or parameter group configurations.
What is Aurora I/O-Optimized?
Aurora I/O-Optimized is a storage configuration option (available since 2023) that eliminates per-I/O charges in exchange for a higher instance and storage price — approximately 30-40% more than Aurora Standard. It is designed for I/O-intensive workloads where the per-I/O costs under Aurora Standard would exceed the premium. The break-even point is roughly 1 billion I/O requests per month for a db.r6g.large instance. Below this threshold, Aurora Standard is cheaper. Above it, I/O-Optimized saves money and makes costs more predictable.
Need Help Choosing the Right Cloud Platform?
Our AWS-certified architects help you evaluate cloud platforms based on your specific requirements, workloads, and business goals.
