High Availability and Scalability in Amazon RDS

High Availability and Scalability in Amazon RDS

One of the key reasons why customers use AWS for their applications is because of the ability to maintain a high degree of availability across each key area of their architecture. Depending on the customer’s deployment, there are a number of different ways in which high availability and scalability can be enabled. In this AWS tutorial, you’ll learn how to enable highly available, scalable databases on RDS. You’ll find detailed instructions on how to follow along in your AWS account.

Quick refresher on RDS

RDS stands for Relational Database Service, and this is AWS’s managed collection of a number of different SQL databases, which have all the functionality of the database you choose, coupled with the agility and high availability you get from utilizing the cloud. The database engines supported currently stands at MySQL, Oracle, Microsoft SQL Server, Aurora, PostGreSQL and MariaDB.

Whilst RDS is highly available, and scalable in many ways by default, we can ensure this is maximized by taking some key steps.

High Availability on AWS means avoiding downtime – and is measured in downtime per month. There are multiple different ways of increasing availability, both by re-architecting your existing application, and also by adding additional features to your current solution. With those key definitions covered, let’s look into how to enable high availability in RDS by discussing Multi-AZ deployments.

It is as easy as a few clicks of a button to provision a Multi-AZ DB instance in the MySQL, MariaDB, PostgreSQL, Oracle, and SQL Server Amazon iterations of RDS. RDS in fact will automatically create a standby DB instance, and then replicate any data from the primary DB to the standby database asynchronously.

If you have already created your database, you can still enable Multi-AZ easily in the console, by following the steps below.

In the photo below, there’s an example RDS MySQL Database instance provisioned in US-East 1b.?

No alt text provided for this image

If you scroll to the right of this instance, you can see that ‘Multi-AZ’ is not enabled. This is however easy to change.

No alt text provided for this image

When you see the instance’s status is ‘Available’, you can select the instance, and select the ‘Modify’ button to change its configuration.

Under Availability and Durability, select the second option. Doing this provisions a standby Multi-AZ instance which mirrors your current RDS database.

No alt text provided for this image

Then click continue and on the next page, choose to apply the changes immediately (for the benefits of this demonstration).

No alt text provided for this image

It will take up to 10 minutes for the change to propagate, and you will see that the instance status will change to Modifying.

No alt text provided for this image

You will now see that multi AZ is enabled!

No alt text provided for this image
No alt text provided for this image

We can now test a simulated failure of an entire AZ, directly in the console. You select the instance (even though it is Multi-AZ, we still see it as one DB instance in the console), and select under actions ‘Reboot’, then select the box that says ‘Reboot with failover’.

We can see a synopsis all of of these events under the Events tab on the left hand side of the page in the RDS console.

No alt text provided for this image

What happened in the background is the rebooting with failover simulated the failing of an Availability Zone. The Multi-AZ instance became the primary instance during this time, taking over for the offline master database. When the old master instance finished rebooting, it came back online but this time as the standby database – showing how behind the scenes AWS look after the Multi-AZ configuration to ensure you have as little downtime as possible built in.

Scaling in RDS

For starters, a Read Replica can be used to aid in the scaling of your database by taking Read load of the primary database, by acting as a Read only counterpart of the main database instance. Read Replicas allow you to elastically scale out when using read heavy workloads, and can provide a notable performance increase also.

You can scale both horizontally and vertically in RDS, with Read Replicas being an example of horizontal scaling.

Let’s talk about how to enable Read Replicas, and how to promote a Read Replica to a master standby instance.

Select the instance, and click ‘Create read replica’ under actions.

No alt text provided for this image

You can then choose to place your Read Replicas in any valid region of your choosing, which has its own benefits.

Scroll down to the end and click ‘Create Read Replica’ and you are done.

You can now see the Read Replica is getting created, with no downtime to the application, only a slight CPU increase on the main database.

Read Replicas can also be easily promoted to a master standby instance directly in the console.

However, when promoting a Read Replica you should stop transactions on the main database. Otherwise, there is a high likelihood that the Read Replica will not have all the transactions committed to the master DB Instance.

After a few minutes, you should see a second database instance, side-by-side in your management console ready to be used if your main DB instance fails.

No alt text provided for this image

How vertical scaling works in RDS

With vertical scaling in RDS, you can simply choose one of the many instance sizes with a push of a button – by using the modify button we saw earlier. You can also change the storage type, as well as allocated storage for the database instance in the same window.

No alt text provided for this image

It is worth noting that there is minimal downtime when you are scaling up when using a Multi-AZ configuration vs a single AZ database. This is because the standby database will get upgraded first, then a failover will occur in the background of the newly sized Database. In a single AZ configuration, the database will simply not be available during the scaling operation.


AWS Training Courses

Amazon RDS features in several of our?AWS certification training courses?including the following:

This post originally appeared on: https://digitalcloud.training/high-availability-in-amazon-rds/

Pharminous Nyabuto

Quality Engineer| ISTQB*11 | AWS *2

5 个月

Thanks for the post

Akram SAYE

Business analyst chez Intelcia IT Solution

2 年

Thank you for all ??????

Nilufa Yeasmin

Cyber Security || IT Networking || Ethical Hacking || Pen Testing || AWS Cloud Computing || Senior Researcher ||

2 年

Great one!

AJAY KUMAR SAHOO

Lead Cloud DevOps/Cloud Engineer @EPAM Systems | AI/ML & GenAI Enthusiast | Ex-Wiproite

2 年

Thanks for sharing Neal Davis

Lakhan Parmar

DevOps/SRE Engineer @TIAA GBS | Ex-Genpact | AWS | CKA | DOCKER | PYTHON | ANSIBLE | LINUX | CICD | NITK

2 年

Thank you for invite Neal Davis

要查看或添加评论,请登录

Neal K. Davis的更多文章

社区洞察

其他会员也浏览了