Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What are the respective advantages/limitations of Amazon RDS vs. EC2 with MySQL? [closed]

People also ask

What are the limitations of Amazon RDS?

MySQL file size limits in Amazon RDS For MySQL DB instances, the maximum provisioned storage limit constrains the size of a table to a maximum size of 16 TB when using InnoDB file-per-table tablespaces. This limit also constrains the system tablespace to a maximum size of 16 TB.

What are the advantages of using Amazon RDS instead of setting up MySQL database on an EC2 instance?

RDS is easy to set up, cost-effective and allows you to focus on more important tasks. Whereas, EC2 offers complete control and flexibility for your SQL Server database. Once you understand the requirements of your application, you would be able to make a better decision.

What is the difference between EC2 and RDS instance?

RDS offers Provisioned IOPS or PIOPS to achieve fast, predictable, and consistent Input/Output performance. EC2 allows you to meet unique performance, replication, archival or DR requirements by giving you the required flexibility. You can choose the EBS (SSD) volume as per the your need.

What are the benefits of using AWS RDS over hosting a database on an EC2 instance group of answer choices?

Amazon RDS is easier to set up, manage, and maintain than running Oracle Database on Amazon EC2, and lets you focus on other important tasks, rather than the day-to-day administration of Oracle Database. Alternatively, running Oracle Database on Amazon EC2 gives you more control, flexibility, and choice.


This is a simple question with a very complicated answer!

In short: EC2 will provide maximum performance if you go with a RAID0 EBS. Doing RAID0 EBS requires a pretty significant amount of maintenance overhead, for example:

http://alestic.com/2009/06/ec2-ebs-raid

http://alestic.com/2009/09/ec2-consistent-snapshot

EC2 without RAID0 EBS will provide crappy I/O performance, thus it's not even really an option.

RDS will provide very good (though not maximum) performance out of the box. The management console is fantastic and it's easy to upgrade instances. High availability and read only slaves are a click away. It's REALLY awesome.

Short answer: Go with RDS. Still on the fence? Go with RDS!!! if you enjoy headaches and tuning every last little bit for maximum performance, then you can consider EC2 + EBS RAID 0. Vanilla EC2 is a terrible option for MySQL hosting.


In this post there is an excellent benchmark between:

  • Running MySql on a Small EC2 + EBS
  • Running MySql on a Small EC2 + EBS + adjusted MySql parameters
  • A Small RDS

The benchmark is very good since it is not focused only in ideal conditions (only one thread) but also in more realistic scenarios, with 50 threads hitting the database.


RDS is not really a high availability system. Read the fine print in the RDS faq. During a failover event it can take up to 3 minutes to failover. Additional amazon will decide it needs to "upgrade" your rds instance and do a failover at that point which will take your database down for "up to 3 minutes" (our experience is that it can take a longer than that).

RDS high availability is very different than master - master or master - slave replication and is much slower. They don't use mysql replication but uses some kind of ebs replication. So in a failover situation it will mount the ebs on the backup machine, start mysql, wait for mysql to do failure recover (hopefully nothing got corrupted too bad), then do a dns switch.

I hope this helps you with you evaluation.


We chose to use EC2 MySQL instances because we have a high read volume and need master-slave replication. Of course, you can spin up multiple RDS instances and setup MySQL replication between them yourself, but we use Scalr.net, which manages that for you using EC2 instances.

Basically, we just tell Scalr how many MySQL instances we want at it keeps them up, automates the setup of replication, handles automatic failover of slave promotion to master if the master gets terminated etc. It does both SQL dump backups and EBS volume snapshots of the master. So, when it needs to create a new slave, it automatically temporarily mounts an EBS volume of the last master snapshot to initialize the slave DB, then starts replication from the appropriate point. All point and click :) (and no, I don't work for Scalr or anything. Scalr is available as Open Source if you don't want to use their service)