RDS is based on EC2, so in this post I will focus on the benefits and disadvantages of using the former, versus migrating MySQL into user-managed EC2 instances.
The value of RDS resides in simplified provisioning and administration. Several of the most common maintenance tasks such as minor version upgrades, backups, and slave creation are automated and can be managed from the AWS console. On the other hand, RDS imposes some limitations to MySQL functionality so it could be offered “as a Service” while delivering a safe and consistent user experience. Within those limitations we can mention:
A quick estimation comparing RDS and EC2 for similar instances and storage shows that RDS is between 40 and 68% more expensive than EC2:
-Instances: 3 x m2.4xlarge -Storage: 3 1Tb EBS volumes (provisioned IOPS – 3000 IOPS) + 100Gb/month of snapshots space -Intra-Region Data Transfer: 40Gb/Month
-Instance type: 1 x db.m2.4xlarge -Multi-AZ: yes -Storage: 1Tb (provisioned IOPS – 3072 IOPS) -Backup space: 100Gb/month -Intra-Region Data Transfer: 40Gb/Month
There is no right or wrong decision when choosing which AWS solution is better for MySQL. RDS is a powerful option if your data is already in InnoDB (and only in InnoDB) and you are looking for a simple, low-maintenance deployment. When other engines and more complex topologies come into the scene, or even the need for MySQL plugins, then going to EC2 is a better option. Any critical process or script running locally on a MySQL instance could also be the decisive factor for choosing EC2, usually because of the time spent in moving the data through the network. Finally, the cost is definitely a key factor, especially when moving several instances into RDS.