Some of the the challenges faced by DBAs can be eliminated by using Database as a Service (DBaaS). Most tasks related to sizing, configuration, database software installation, security, monitoring, automation, backup and recovery, and cost are taken care of by the service providers with transparency and cost control for the users. Both Amazon Aurora and Amazon RDS offer options to assist in database administration.
Amazon Relational Database Service (Amazon RDS) makes it easy to set up, operate, and scale a relational database in the cloud. It provides cost-efficient and resizable capacity while managing time-consuming database administration tasks, freeing you up to focus on your applications and business. Amazon RDS provides six familiar database engines to choose from, including Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle, and Microsoft SQL Server.
Amazon Aurora is a relational database engine. It is designed to deliver the speed and reliability of high-end commercial databases in a simple and cost-effective manner. Aurora is designed to be compatible with MySQL 5.6 and delivers five times the throughput of standard MySQL running on the same hardware. DBAs are able to save time on planning backup storage disks, as data is continuously backed up to AWS S3 in real time, with no performance impact to the end user. This eliminates the need for backup windows and automated backup scripts. Aurora replicates data to six storage nodes in Multi AZs to withstand the loss of an entire AZ or two storage nodes without any availability impact to the client’s applications.
The modern DBA – learn how to remain relevant in the age of DBaas
The modern DBA – learn how to remain relevant in the age of DBaaS
Comparison of Key Features
Amazon RDS is a hosted database service. It has multiple flavors of RDBMS—from MySQL, Postgres, Oracle, and MSSQL to MariaDB and Aurora. Unlike hosting a database on RDS, where we have additional performance benefits over EC2, monitoring, and quick installation features, Aurora has some even newer tricks up its sleeves. We will compare Aurora DB with other RDS database services by feature and let you decide.
Performance is one of the key KPIs for businesses, and DBAs have to stay on top of it by ensuring optimal throughput with the given hardware. The storage disk has always been a bottleneck due to its comparatively slow speed for databases. Amazon RDS uses SSDs in all its database services to achieve better IO throughput.
Amazon Aurora provides five times the throughput of standard MySQL or twice the throughput of standard PostgreSQL running on the same hardware. Amazon achieves this by using software and hardware techniques to ensure the database engine is able to fully leverage available compute, memory, and networking.
On the other hand, Amazon RDS lets you choose between two SSD-backed storage options: one optimized for high-performance OLTP applications, and the other for cost-effective general-purpose use. With the first option, the storage type is optimized for I/O-intensive transactional (OLTP) database workloads, and enables you to provision up to 30,000 IOPS per database instance. The second option, for cost-effective, general-purpose use delivers a consistent baseline of 3 IOPS per provisioned GB.
Compatibility with Database Engines
When it comes to migrating your on-premises databases to cloud or from RDS to Aurora, you still need to meet your SLAs. All steps must be performed with minimal to no downtime. Amazon Aurora is compatible with two databases: MySQL and PostgreSQL. If, like the majority of users, you’re already using MySQL or PostgreSQL software for your database, Aurora is compatible with MySQL 5.6 and PostgreSQL 9.6.1. PostgreSQL on Aurora is open for preview as of now so DBAs can get their hands dirty before the service is live for production deployments. This means your existing database applications and tools can run on Aurora with no modification required. On the other hand, you can use AWS Database Migration Service to easily migrate from on-premises or EC2-hosted databases (like PostgreSQL, Oracle, or SQL Server) to Amazon RDS.
Based on database usage, your Amazon Aurora storage will automatically grow, from the minimum of 10 GB up to 64 TB, in 10 GB increments, with no impact on database performance. There is no need to provision storage in advance. This is really a “wow factor” and saves the DBA the effort of predicting and provisioning of storage required for uninterrupted business executions, whereas Amazon RDS requires you to provision up to 6 TB of storage on-the-fly with zero downtime. It should be noted, however, that Amazon Aurora only supports the InnoDB storage engine; tables from other storage engines are automatically converted to InnoDB.
As a DBA, provisioning scalability is a central task, but avoiding downtime is also very important. With Amazon RDS and Aurora, you can scale the compute and memory resources powering your deployment up or down, up to a maximum of 32 vCPUs and 244 GiB of RAM. Compute scaling operations typically complete in a few minutes with just a few clicks.
Amazon Aurora supports two kinds of replicas. Amazon Aurora replicas share the same underlying volume as the primary instance. Updates made by the primary instance are visible to all Amazon Aurora replicas. With Aurora, you can provision up to 15 replicas, and replication is performed in milliseconds. By contrast, RDS allows only five replicas, and the replication process is slower than Amazon Aurora. The replicas on Amazon Aurora use the same logging and storage layers which in turn improve the replication process. Failover is automatic with no data loss on Amazon Aurora, whereas failover on RDS is manual and may result in last-minute data loss.
Automated backups are stored in Amazon S3, which is designed for 99.999999999% durability. Amazon Aurora backups are automatic, incremental, and continuous, and have no impact on database performance. This also eliminates the need to take frequent snapshots of your data in order to improve restore times.
On the other hand, Amazon RDS automatically performs a full daily snapshot of your data during the backup window set by you, and captures transaction logs. During the backup window, storage I/O may be suspended while your data is being backed up, and you may experience elevated latency. This I/O suspension typically lasts for the duration of the snapshot.
Sometimes, we need to recover from a database crash or recover a lost table. Having a proper backup and recovery strategy eliminates or minimizes the downtime. In the case of a crash recovery, Amazon Aurora does not need to replay the redo logs from the last checkpoint, so recovery is faster than with Amazon RDS. You can recover your data by creating a new Aurora DB cluster from the backup data that Aurora retains, or from a DB cluster snapshot that you saved on S3. Similarly, point-in-time restore can also be performed using snapshot backups for Amazon RDS.
Amazon Aurora automatically maintains six copies of your data across three Availability Zones (AZs), and will automatically attempt to recover your database in a healthy AZ with no data loss. This makes it fault-tolerant and self-healing. It transparently handles the loss of up to two copies of data without affecting database write availability, and up to three copies without affecting read availability. Data blocks and disks are continuously scanned for errors and replaced automatically. Unplanned failover takes place within minutes and is almost immediate and automatic because all replicas use the same logging and storage layers. Amazon RDS failover to a replica takes comparatively more time and has to be done manually.
Amazon Aurora can detect a database failure and recover in less than a minute, without the need to warm up the database caches that are needed for better response times. In the case of a permanent failure, Aurora can automatically failover to a replica without losing any data.
DBAs have been responsible for database patching, and for making sure that it is performed on a regular basis. Amazon does a good job taking over this task: Amazon RDS and Aurora will automatically update your database with the latest patches.