Aurora vs RDS — sound familiar?
- ▸ Aurora bill higher than expected — I/O-optimised vs standard, instance class, multi-AZ — the cost model has 3+ axes you didn't model. The bill doubled in 6 months.
- ▸ 5x performance claim doesn't materialise — Marketing said 5x. Your workload sees 1.2x. Workload is write-heavy and Aurora's read-replica architecture doesn't help you.
- ▸ Stuck on RDS, wondering about Aurora — Considering the migration but unclear whether the throughput jump justifies the cost. Need the actual decision math, not vendor brochure.
JusDB DBAs run both in production. We'll give you the honest answer in 30 minutes — no vendor pitch. Book a comparison call →
Aurora MySQL vs RDS for MySQL
Aurora and RDS for MySQL are both AWS-managed services, but they're architecturally very different beasts. Aurora uses a shared-storage cluster model with 6-way replication and decoupled compute. RDS for MySQL is a closer-to-vanilla MySQL with EBS storage. The right pick depends on your read-write ratio, scale, HA requirements, and how much per-IO cost you can stomach. This guide is the production-DBA view of when each wins.
Feature Matrix
Aurora MySQL vs RDS for MySQL — side-by-side
| Feature | Aurora MySQL | RDS for MySQL |
|---|---|---|
| Storage architecture | Distributed shared storage, 6-way replication | EBS gp3 or io2 volumes per instance |
| Read replicas | Up to 15 (low-latency, same storage) | Up to 5 (separate EBS, replication lag) |
| Failover time | 30-60 seconds typical | 60-120 seconds typical |
| Storage scaling | Auto-scaling 10GB → 128TB | Manual or storage-autoscaling |
| Storage cost | $0.10/GB-month + I/O charges | $0.115/GB-month (gp3) no per-I/O |
| I/O charges | $0.20 per 1M requests (standard) or included (I/O-optimised) | Included in EBS volume |
| Backup retention | Up to 35 days, continuous | Up to 35 days, snapshot-based |
| Multi-region | Aurora Global Database (sub-second lag) | Read replicas across regions (async) |
| Serverless option | Aurora Serverless v2 (auto-scaling ACUs) | No native serverless |
| Encryption | At-rest (KMS) + in-transit | At-rest (KMS) + in-transit |
| Max instance class | db.r7g.16xlarge | db.x2iedn.32xlarge |
| Min instance class | db.t4g.medium (Serverless v2: 0.5 ACU) | db.t4g.micro |
| MySQL version compatibility | MySQL 5.7, 8.0 | MySQL 5.7, 8.0, 8.4 |
| Pricing model complexity | Higher (I/O + storage + compute + IO-Opt option) | Simpler (storage + compute) |
| Read-heavy throughput | Very high (15 replicas, shared storage) | Limited (replica lag scales with writes) |
| Write-heavy throughput | Bottlenecked by single writer | Bottlenecked by single writer + EBS IOPS |
| Connection scaling | RDS Proxy supported | RDS Proxy supported |
| Cloud-vendor lock-in | High (proprietary storage layer) | Low (standard MySQL, exportable) |
When Aurora MySQL wins
Read-heavy workloads
15 read replicas with shared storage — near-zero lag. Aurora's read scaling is the headline feature.
HA criticality
30-60s failover vs RDS 60-120s. 6-way replication means data loss tolerance is minimal.
Serverless / variable workloads
Aurora Serverless v2 auto-scales ACUs based on load — RDS doesn't have an equivalent.
Cross-region read replicas
Aurora Global Database has sub-second cross-region lag. RDS cross-region replicas are async.
Storage management
Auto-scaling 10GB → 128TB. No DBA intervention to grow storage.
When RDS for MySQL wins
Cost-sensitive deployments
RDS is 30-50% cheaper at small/medium scale. No per-I/O charges. The Aurora premium is real.
Write-heavy workloads
Aurora's shared storage doesn't help if you have a single write hotspot. RDS gets you closer to bare-metal MySQL write throughput per dollar.
Standard MySQL feature parity
Aurora is mostly compatible but has some divergences (MySQL 8.4 not yet supported, certain replication features). RDS is closer to vanilla MySQL.
Multi-AZ simplicity
RDS Multi-AZ is well-understood and operationally simple. Aurora cluster topology has more moving parts.
Lower lock-in
RDS data exports trivially; Aurora's storage layer is AWS-proprietary.
Migration
Migration paths between Aurora MySQL and RDS for MySQL
RDS MySQL → Aurora MySQL
Use the "Create Aurora replica" option in RDS console for near-zero-downtime; then promote. Validate replication lag and connection pool.
Aurora MySQL → RDS MySQL
mysqldump + binlog replay; or DMS task with full + CDC. Test on staging first — some Aurora features won't exist.
Self-hosted MySQL → Aurora/RDS
DMS migration task with CDC for zero-downtime. Aurora preferred for HA-critical; RDS for cost-sensitive.
FAQ
Common questions
Need help deciding?
We run both in production. 30-minute call, honest answer for your specific workload, no vendor pitch.