RDS Multi-AZ & Read Replicas
RDS (Relational Database Service) is a managed service for relational databases: PostgreSQL, MySQL, MariaDB, Oracle, SQL Server, and Amazon Aurora. Multi-AZ provides high availability; Read Replicas provide read scalability.
Multi-AZ is a co-pilot (standby) who knows the route but sits quietly until the pilot (primary) is incapacitated. Read Replicas are photocopied maps given to passengers — they can read them, but shouldn't navigate with them.
Multi-AZ: synchronous replication to a standby in another AZ. Automatic failover (typically 1-2 minutes) when the primary fails. Standby is NOT readable — it's only for HA. Read Replicas: asynchronous replication, readable, can be in same region, cross-region, or promoted to standalone. You can have up to 5 read replicas per instance (15 for Aurora). Automated backups: 1–35 day retention, point-in-time recovery. Manual snapshots: retained until deleted. RDS Proxy: pools and shares database connections, reducing connection overhead for Lambda workloads.
Aurora is AWS's cloud-native relational database: 5x faster than MySQL, 3x faster than PostgreSQL, auto-scaling storage up to 128 TB, up to 15 low-latency read replicas, global database with cross-region replication in under 1 second. Aurora Serverless v2 scales compute to 0.5 ACUs, ideal for variable workloads. RDS Performance Insights provides a query-level view of database load. Multi-AZ DB Cluster (for MySQL/PostgreSQL) uses semi-synchronous replication to two standbys and allows reads on standbys — a compromise between Multi-AZ HA and read replica performance. RDS IAM authentication lets you use IAM roles for DB auth, eliminating password management.
Multi-AZ is for high availability — synchronous standby in another AZ with automatic failover. Read Replicas are for read scalability — direct reporting queries and analytics there. For production, I use Aurora for its speed, auto-scaling storage, and fast failover. RDS Proxy is essential for Lambda workloads where hundreds of functions open connections simultaneously. For analytics, I stream from RDS to a data warehouse rather than hammering the production instance.
Thinking Multi-AZ adds read capacity. The standby is not readable — it only serves as a failover target. You need Read Replicas for read scaling. Also, Read Replica lag can cause stale reads — never run transactions that require consistency against a replica.