RDS Multi-AZ vs Read Replica: Availability or Read Scaling?
A practical comparison of RDS Multi-AZ DB instances, Multi-AZ DB clusters, and read replicas for failover, read traffic, replication, and recovery.
Failover and read scaling are separate requirements
Multi-AZ protects availability; read replicas offload reads through asynchronous replication.
Synchronous standby that does not serve reads.
Writer and readable failover targets in three AZs.
Separate endpoint with possible replication lag.
Protect against logical damage that replication can copy.
RDS Multi-AZ and read replicas are frequently grouped together because both maintain additional database copies. They are not interchangeable. A traditional Multi-AZ DB instance is designed for high availability and managed failover; a read replica is designed primarily to serve read-only traffic and can also support selected migration or disaster-recovery patterns.
Quick answer: use Multi-AZ when the database must survive an instance or Availability Zone failure without manual intervention. Use a read replica when read traffic is slowing the primary and the application can tolerate slightly stale reads. Many production systems need both, because a replica is not a substitute for a failover standby and a standby cannot serve your reporting queries.
Multi-AZ DB instance: managed standby for failover
In a Multi-AZ DB instance deployment, RDS maintains a synchronous standby in another Availability Zone. Applications connect to the primary endpoint. If RDS performs a failover, the endpoint is redirected to the promoted standby.
The standby in this deployment does not serve application read traffic. Its purpose is availability, not read scaling.
Multi-AZ can reduce the impact of instance failure, Availability Zone disruption, and selected maintenance events, but it does not eliminate all downtime. Applications still need sensible connection timeouts, retry behavior, transaction handling, and failover testing.
Multi-AZ DB cluster: availability plus readable instances
An RDS Multi-AZ DB cluster has one writer and two readable instances across three Availability Zones for supported database engines and Regions. The readers act as failover targets and can also serve read traffic.
This is different from the traditional single-standby Multi-AZ DB instance. Confirm engine, version, Region, instance-class support, application connection behavior, and cost before selecting it.
Read replica: asynchronous read scaling
A DB instance read replica receives changes asynchronously through the database engine's replication mechanism. Applications can route suitable read-only queries to the replica, reducing read load on the primary.
Because replication is asynchronous, replica lag is possible. A request that writes to the primary and immediately reads from a replica might not see the new value yet. Route consistency-sensitive reads to the writer or design the application to tolerate eventual consistency.
Read replicas are separate billable database instances. They require monitoring, connection routing, capacity planning, and a clear response to replication failure or excessive lag.
Can you use both?
Yes. A production database can use a Multi-AZ DB instance for primary failover and one or more read replicas for read scaling. The source and each replica need their own availability, backup, monitoring, and cost decisions.
Comparison
| Capability | Multi-AZ DB instance | Multi-AZ DB cluster | DB instance read replica |
|---|---|---|---|
| Primary goal | High availability | High availability plus read capacity | Read scaling |
| Replication | Synchronous | Semisynchronous | Asynchronous |
| Serves reads | Standby does not | Reader instances do | Yes |
| Automatic failover target | Yes | Yes | Not the same automatic role as a cluster reader |
| Application endpoint | Primary endpoint follows failover | Writer and reader endpoints | Separate replica endpoint |
| Replica lag concern for reads | Standby is not queried | Monitor reader behavior | Yes |
| Cross-Region option | Not the normal Multi-AZ model | Same-Region cluster | Supported for selected engines and configurations |
What happens when the primary fails
With a Multi-AZ DB instance, RDS detects the failure, promotes the standby in the other Availability Zone, and moves the database endpoint to it. Because replication is synchronous, committed transactions are on the standby. Existing connections drop, and new connections fail until the endpoint resolves to the new primary. AWS describes a Multi-AZ DB instance failover as completing in as little as 60 seconds; plan for one to two minutes and test your own application, because DNS caching and connection pools often add more delay than the database does.
With a Multi-AZ DB cluster, AWS documents failover as typically under 35 seconds, because a readable instance that already holds the data is promoted to writer.
With only a read replica, nothing fails over automatically. If the primary is lost, you decide to promote the replica, which detaches it from the source and makes it a standalone writable database. Because replication was asynchronous, writes that had not reached the replica are lost, and the application must be pointed at the new endpoint. That is a recovery procedure, not high availability.
What happens when a read replica fails or lags
If a replica fails, the primary is not affected. Traffic routed to that replica errors until you route it elsewhere or the replica is replaced. If a replica falls behind because of heavy writes, long-running queries, or an undersized instance, it returns older data rather than failing, which is harder to notice. Monitor replica lag and decide in advance what the application does when lag exceeds your tolerance, such as falling back to the writer for that request.
A realistic workload example
Consider a subscription web app with a single PostgreSQL primary on RDS. Checkout, sign-in and account changes are write-heavy and must never see stale data. Dashboards, exports and a nightly reporting job are read-heavy and slow the primary at peak.
- Requirement 1: the checkout database must survive an Availability Zone problem. That is a Multi-AZ decision. Reads on a replica do nothing for it.
- Requirement 2: reports should not slow checkout. That is a read replica decision. The reporting job connects to the replica endpoint and tolerates data that is a few seconds old.
- Result: a Multi-AZ primary plus one read replica, with the application using separate write and read connection settings.
If the same app had only requirement 1, a replica would add cost and operational surface with no benefit. If it had only requirement 2 and could accept manual recovery from backups, Multi-AZ might be unnecessary for a non-critical internal tool.
Read-after-write consistency
A user updates their profile and the next page load reads from a replica that has not received the change. They see the old value and assume the save failed. Common ways to handle it:
- Send reads that must reflect a just-completed write to the primary.
- Pin a user's reads to the primary for a short window after they write.
- Reserve replicas for reads where staleness is harmless, such as reports, search indexing and analytics.
- Alert on replica lag so the window is known rather than assumed.
A Multi-AZ DB instance standby has no such issue because the application never reads from it. In a Multi-AZ DB cluster, reader instances use a different replication model than classic read replicas, so verify the consistency behavior for your engine before routing sensitive reads to them.
Cost and operating trade-offs
The following is an illustrative comparison in relative terms, not a price quote. Assume one primary instance costs 1 unit per hour.
| Setup | Approximate instance cost | What you get | Extra operating work |
|---|---|---|---|
| Single-AZ primary | 1 unit | Backups only | Restore from backup after failure |
| Multi-AZ DB instance | About 2 units (standby is billed) | Automatic failover | Failover testing, retry logic |
| Multi-AZ instance + 1 read replica | About 3 units | Failover plus read offload | Read/write routing, lag monitoring |
| Multi-AZ DB cluster | Three instances plus storage | Failover plus readable instances | Verify engine, version and Region support |
Confirm current rates on the RDS pricing page for your engine, instance class and Region, and include storage, backup retention, cross-Region data transfer and monitoring. If your goal is only to reduce cost, a replica does not lower the bill: it adds an instance. It is worth its cost when it lets you avoid upsizing the primary or protects checkout latency.
Decision guide
| If your main problem is... | Start with | Why |
|---|---|---|
| The database must survive an AZ or instance failure | Multi-AZ | Automatic failover with synchronous replication |
| Reporting or heavy reads slow the primary | Read replica | Moves read load off the writer |
| Both of the above | Multi-AZ primary plus read replica | Each solves a different problem |
| A whole Region must be survivable | Cross-Region replica or backup copy, plus a tested runbook | Multi-AZ stays inside one Region; see Multi-AZ vs Multi-Region |
| Recovering from accidental deletion or bad writes | Backups and point-in-time recovery | Replication copies mistakes |
| Moving a database into AWS with minimal downtime | Replication-based migration | Read replicas are used in some engine-specific migration paths |
Backups solve a different problem
Neither Multi-AZ nor a read replica replaces backups. Replication can copy accidental deletion, damaging application writes, or logical corruption. Maintain an appropriate backup and point-in-time recovery strategy, protect recovery points from unauthorized deletion, and test restoration.
Questions to answer before choosing
- Is the requirement automated failover, read throughput, regional recovery, or all three?
- Can the application separate read and write connections?
- Which reads require immediate consistency?
- What replica lag is acceptable?
- Has application reconnect and retry behavior been tested during failover?
- What RPO and RTO have business owners approved?
- Does the engine, version, instance class, and Region support the intended deployment?
- What is the complete cost of every instance, storage layer, backup, and data transfer?
Verify with AWS
- RDS Multi-AZ DB instance deployments
- RDS Multi-AZ deployment types
- RDS read replicas
- Failing over a Multi-AZ DB cluster
- Amazon RDS Multi-AZ overview
The practical takeaway
Choose Multi-AZ when the primary requirement is database availability. Choose read replicas when the application needs additional read capacity and can handle asynchronous replication. If both requirements exist, combine the patterns deliberately and test failure behavior instead of assuming additional copies automatically provide recovery.
Not sure which pattern fits your actual workload? An AWS consulting review can walk through your specific availability and read-scaling needs before you commit to an architecture.
Related CloudSyncPK resources
- AWS Multi-AZ vs Multi-Region: when a Regional failure justifies more than Multi-AZ
- AWS Backup Best Practices for Businesses: backups and point-in-time recovery, which replication does not replace
- Backup & Disaster Recovery: designing and testing recovery objectives
- AWS Cloud Migration: moving an existing database to RDS with a documented cutover and rollback plan
- Best AWS Hosting for Laravel Apps Related reading: AWS Backup Best Practices for Businesses, Best AWS Hosting for Laravel Apps
Related Services
Want a second opinion on your setup?
Book a free AWS audit — no obligation, no credentials required.