Run PostgreSQL / MySQL / MariaDB / Oracle / SQL Server without managing OS / backups / patching.
RDS is like leasing a fully serviced office - landlord handles the building; you handle the work and the keys to your desk.
Primary DB (writer)
| sync (Multi-AZ) ---> Standby
| async --> Read Replica(s)
+-------- Automated Backups to S3
(daily + continuous WAL archive -> PITR)
RDS supports 6 engines (PostgreSQL, MySQL, MariaDB, Oracle, SQL Server, Aurora). Multi-AZ creates a synchronous standby; automatic failover (~60-120s). Up to 5 Read Replicas for read scaling (async). Automated backups run daily + WAL continuously - PITR (point-in-time restore) lets you rewind to any second in the retention window (default 7d, max 35d). Storage auto-grows; Performance Insights surfaces DB load.
aws rds create-db-instance \
--db-instance-identifier mydb \
--engine postgres --engine-version 16.3 \
--db-instance-class db.t4g.medium \
--allocated-storage 100 --storage-type gp3 \
--multi-az --db-subnet-group-name my-private
Multi-AZ Postgres 16 with GP3 storage, placed in private subnets only.
aws rds create-db-snapshot \
--db-instance-identifier mydb \
--db-snapshot-identifier mydb-pre-migration
manual snapshot before a risky migration; durable named checkpoint.
aws rds restore-db-instance-to-point-in-time \
--target-db-instance-identifier mydb-restore \
--source-db-instance-identifier mydb \
--restore-time 2024-05-10T14:30:00Z
rewinds the DB to a specific second by replaying WAL.
Treating RDS as auto-scale infinitely - storage autoscales only UP, and modifying the instance class requires a brief outage. Also: plaintext master password in Terraform.
Multi-AZ in production; Subnet Group must be private subnets only; Secrets Manager for credentials; Performance Insights ON; backup retention >= 7 days.
reboot-db-instance --force-failover.aws rds modify-db-instance --engine-version 16 --allow-major-engine-upgrade.