Skip to content
Pablo Rodriguez

Amazon Rds

Amazon RDS is a fully managed relational database service that you can use to set up, operate, and scale relational databases in the cloud.

Amazon RDS is a managed relational database service to deploy and scale relational databases. It automates routine database tasks such as provisioning, patching, backup, recovery, failure detection, and repair without needing to provision infrastructure or maintain software.

  • Amazon Aurora with MySQL compatibility
  • Amazon Aurora with PostgreSQL compatibility
  • Amazon RDS for MySQL
  • Amazon RDS for MariaDB
  • Amazon RDS for PostgreSQL
  • Amazon RDS for Oracle
  • Amazon RDS for SQL Server

Amazon RDS uses Amazon Elastic Block Store (Amazon EBS) volumes for database and log storage, and you can scale the storage capacity allocated to your database instance.

Lower Administrative Burden

  • No need to provision infrastructure
  • No need to install and maintain database software
  • Single console and API for managing all relational databases
  • Built-in security and monitoring

Highly Scalable

  • Scale compute and memory resources with few mouse clicks or API call
  • Selection of instance types optimized for different use cases
  • Flexibility to choose appropriate mix of resources

Available and Durable

  • Multi-AZ deployment for high availability with automated failover
  • Read replicas for scaling read-heavy workloads
  • Synchronously replicated secondary database

Secure and Compliant

  • Run database instances in Amazon VPC for isolation
  • Firewall settings and network access control
  • Encryption at rest and in transit
  • HIPAA eligibility and compliance readiness

Amazon RDS facilitates deployment and maintenance of relational databases in the cloud by managing a specialized EC2 instance that provides computing capacity.

  • RDS instances: Isolated database environments that can contain multiple user-created databases
  • Database engine: Allows storing, sorting, and retrieving data
  • EBS volumes: Used for database and log storage with scalable capacity

Aurora is a MySQL and PostgreSQL-compatible RDBMS built for the cloud:

  • Up to 5x faster than standard MySQL databases
  • Up to 3x faster than standard PostgreSQL databases
  • Security, availability, and reliability of commercial databases at approximately 1/10th the cost
  • Fully managed by Amazon RDS
  • Automates hardware provisioning, database setup, patching, and backups
  • Distributed, fault-tolerant, self-healing storage system
  • Auto scales up to 64 TB per database instance
  • Up to 15 low-latency read replicas
  • Point-in-time recovery and continuous backup to Amazon S3
  • Replication across three Availability Zones

An Aurora database cluster includes one or more database instances and a cluster volume that manages data for those instances.

Primary Database Instance:

  • Supports read and write operations
  • Performs all data modifications to the cluster volume
  • Each Aurora DB cluster has one primary DB instance

Aurora Replicas:

  • Connect to same storage volume as primary DB instance
  • Support only read operations
  • Up to 15 Aurora replicas per cluster
  • Located in separate Availability Zones for high availability
  • Automatic failover in case primary becomes unavailable
  • Can specify failover priority
  • Offload read workloads from primary instance

Aurora Serverless is an on-demand, auto scaling configuration for Aurora where the database automatically starts up, shuts down, and scales capacity based on application needs.

Running workloads with sudden and unpredictable increases in activity. Database automatically scales to meet peak load and scales back down when activity decreases.

  • Hands-off capacity management
  • Fine-grained scaling
  • Can modify existing DB instances from provisioned to Aurora Serverless v2 or vice versa
  • Can use Aurora Serverless v2 instances along with provisioned instances in existing or new clusters

Amazon RDS is suitable for online transaction processing (OLTP) that stores and updates transactional data reliably and efficiently in high volumes.

Banking transaction example showing transactional data structure:

Transaction IDDateTransaction DescriptionTransaction TypeTransaction Amount
00798345142023-11-05UtilityWithdrawal100.00
00798345132023-11-05Employer nameDirect deposit1000.00
00798345122023-11-04Interest paymentDeposit0.07

Each transaction has unique identifier with data including transaction date, description, type, and amount recorded for each transaction.

Amazon RDS provides instance types optimized for different relational database use cases with varying combinations of CPU, memory, storage, and networking capacity.

General Purpose (T4g, T3, M6g, M5):

  • Suitable for CPU-intensive workloads
  • Moderate CPU usage with temporary spikes

Memory-Optimized (R6g, R5, X2g, X1E):

  • Suitable for query-intensive workloads
  • High connection counts
Instance TypeMemory (GiB)vCPU
db.m6g.large82
db.r6g.large162
db.m6g.xlarge164
db.r6g.xlarge324

When upgrading, first identify the issue: if m6g.large needs upgrade, determine if it needs more memory (r6g.large) or CPU (m6g.xlarge).

VPC Deployment

Run DB instance in custom and private VPC for greatest possible network access control

IAM Policies

Use IAM policies to assign permissions for managing Amazon RDS resources

Security Groups

Control connecting IP addresses and resources through security groups

SSL/TLS Connections

Use SSL or TLS connections with database instances running supported engines

Encryption

Encrypt database instances and snapshots at rest with AWS KMS key

Database Security Features

Use security features of database engine to control database access

Security is a shared responsibility between you and AWS. AWS protects infrastructure, while you are responsible for security in the cloud including managing access to RDS resources and databases on instances.