I was playing around with Amazon RDS today. It’s a web service that makes it easy to set up, operate, and scale a relational database in the cloud. In other words, Amazon manages MySQL on the server level and you can connect to it via your application or a MySQL command line. You are also able to perform various database administration tasks via an Amazon API or using something like a RightScale management platform.
Here are some of the cool things Amazon lets you do via a single API call:
- Create a new MySQL instance and specify such parameters as: instance size, storage volume size, admin user/password, availability zone and many others
- Deploy a MySQL instance into two availability zones which essentially gives you two servers in different data centers that are kept in sync. If one of them fails automatic fail-over is performed.
- Vertical scaling of instances with no downtime (cpu, ram, storage)
- Automatic and configurable database snapshots and point in time recovery (you can start up a new MySQL instance from a backup in minutes)
- Replication slaves can be created from a master and be used as read-only slaves
- Options typically set in my.cnf are configurable using “Parameter Groups”
- Configure access to MySQL instances via “Security Groups”
- Monitor MySQL logs and events via “RDS Events”
The coolest thing is how fast all these operations can be done. Most of them take only 5-10 minutes. Creating a MySQL slave in 5 minutes or scaling a server vertically with no downtime? You can’t beat that! Amazon automated all the the fancy footwork that is required to perform these operations. I have not done any benchmarking yet, this is coming next!
More info about Amazon RDS can be found in the Amazon Relational Database Service User Guide.