Multi Availability Zone#
When you decide to create an RDS Instance, you can create a single Instance, or a Multi-AZ Instance. As you can probably imagine, this means that RDS creates two Instances of your database. What's not immediately obvious is what happens after this is done, but in short, you get availability, data redundancy, and performance gains.
Looking at Multi-AZ in terms of availability and data redundancy, you get an automated failover of your database when the primary one goes down (stop responding, experiencing a hardware fault, etc.) This means if there's a failure, your business application should be back online in under a minute, versus hours, which as the potential to prevent some business losing millions in lost revenue. And, furthermore, you're unlikely to suffer any data loss and the entire process of automatically failing over is, well, automated. You don't have to do anything.
Note
I think it's worth considering a question here: is RDS' Multi-AZ capability expensive when you consider just the above option? Some would say it's expensive because, "I can implement that my self". Trust me, after 20+ years in the industry, you don't want to implement that yourself. So yes, it's worth the cost.
Another key benefit is the performance gain that can be had from the a Multi-AZ setup. During a backup, all I/O activity targets your primary database instance, and the backup is targeting your backup instance, so I/O performance isn't affected at all.
Finally, with a Multi-AZ setup, any data you write to the primary target is automatically replicated to the standup in real-time.
But you can take Multi-AZ even further. You can use an option that gives your two stand-by servers, and they're also read-only targets. This means you can "split" the database I/O between the primary instance (which is a read and write target) and the stand-by instances. The primary instance is the only instance to receive both read (SELECT
) and write (UPDATE
/INSERT
) queries, where as the stand-up instances only receieve read (SELECT
) queries.
This splits the load on your database across multiple instance, improving throughput.
We won't explore Multi-AZ in this section, but we will evenrtually.