AWS Aurora
Amazon Aurora is a relational database engine of Amazon RDS that is compatible with MySQL and PostgreSQL. AWS redesigned the storage layer for the cloud, which gives higher throughput and faster failover than the standard engines, with the same drivers and tools.
Key concepts #
- Cluster: one writer instance and up to 15 reader instances that share the same storage volume. A cluster endpoint always points to the writer, and a reader endpoint load-balances the readers.
- Shared, distributed storage: grows automatically in 10 GB steps (up to 128 TiB) and keeps six copies of the data across three Availability Zones. Failover to a reader normally takes under a minute.
- Aurora Serverless v2: capacity that scales up and down in fine steps, measured in Aurora Capacity Units (ACUs).
- Aurora Global Database: replicates a cluster to other Regions with low latency, for disaster recovery and local reads.
- Backups are continuous and allow point-in-time recovery; Backtrack (MySQL) rewinds the database without a restore; clones create copies quickly.
- Runs in subnets of a VPC with a DB subnet group, protected with security groups and encrypted with KMS. The master password can be managed in Secrets Manager.
Aurora or RDS? #
Use standard RDS (MariaDB, MySQL, PostgreSQL, Oracle, SQL Server) for simple or small databases and when you need an engine that Aurora does not offer. Aurora costs more per instance but offers better availability and scalability for demanding workloads.
Pricing #
Per instance hour (or per ACU hour with Serverless v2), plus storage, I/O (or the I/O-Optimized configuration), backups and data transfer. See the Aurora pricing.
With Terraform #
The resources are aws_rds_cluster, aws_rds_cluster_instance, aws_rds_cluster_parameter_group and aws_db_subnet_group.
See tutorials: