Skip to main content

AWS RDS Tutorial: A Guide to Launching Your First Database

This comprehensive guide demystifies AWS RDS, walking you through setup, performance tuning, and cost management.
May 31, 2025  · 14 min read

Amazon Web Services (AWS) offers a wide range of tools for building and managing applications in the cloud. 

One of the most useful services for data practitioners is Amazon Relational Database Service (RDS), a fully managed solution that supports popular database engines like MySQL, PostgreSQL, MariaDB, Oracle, and SQL Server

Whether you're just starting and want to deploy a database without managing the infrastructure yourself, or you're an experienced professional looking to fine-tune performance and cost, RDS makes it easier.

In this tutorial, I’ll explain RDS's main features and show you how to get started step by step.

What is AWS RDS?

AWS RDS simplifies the setup, operation, and scaling of relational databases in the cloud. Instead of managing infrastructure, patching, backups, and scaling manually, RDS automates much of this work so that you can focus on your application and data.

It supports multiple database engines such as MySQL, PostgreSQL, Oracle, SQL Server, and Amazon Aurora. You benefit from features like:

These features allow you to run critical production workloads with confidence while minimizing manual intervention.

Setting Up an AWS RDS Instance

To get started with RDS, you’ll first need to create a new instance through the AWS Console. If you do not have an AWS account, you can sign up for free. 

> To learn more about the broader AWS ecosystem, check out the AWS Cloud Technology and Services course.

Creating a new RDS instance

1. In the AWS search console, look for “RDS” and click on the Aurora and RDS service.

Screenshot from AWS console showing the RDS service in the search bar.

2. Click on Databases on the left-hand side menu.

Screenshot from AWS console showing the Aurora and RDS console.

3. Click on Create database on top right corner.

Screenshot from AWS console showing the databases section for Aurora and RDS

4. Choose Standard Create to have full control over the configuration.

Screenshot from AWS console showing the different database creation methods for RDS.

Under Engine options, pick your preferred database engine. PostgreSQL is a great choice for most use cases.

5.  After selecting the engine, configure the rest of the options to finish the setup. 

We will go through the rest of the settings needed to finish this step successfully.

Engine version

The engine version determines which version of your selected database engine (e.g., PostgreSQL, MySQL) will be used. This affects the features, performance, and compatibility of your database.

Screenshot from AWS console showing all the engine versions available for databases.

Choose the latest stable version unless you have a specific reason (e.g., app compatibility) to use an older one. AWS typically preselects the latest major version, like PostgreSQL 17.2, which is a safe choice for most users.

Templates

Templates provide a pre-configured setup for your database instance based on your use case: production, development, or free-tier testing. They influence default settings like performance, availability, and backup retention.

Screenshot from AWS console showing database template options.

  • Select Production if you're running a live app and need high availability.
  • Choose Dev/Test if this is for internal development or experimentation.
  • Pick Free Tier if you're eligible and just trying RDS for the first time to avoid charges.

Availability and durability

This determines how your database handles failures and distributes traffic across availability zones. It impacts uptime, redundancy, and how quickly your system recovers from issues.

Screenshot from AWS console showing the availability and durability deployment options for databases.

  • Choose Multi-AZ DB cluster (3 instances) for high-read workloads and maximum resilience (two readable replicas).
  • Choose Multi-AZ DB instance (2 instances) for most production setups, adds a standby instance for failover without extra read capacity.
  • Select Single-AZ only for dev/testing or non-critical applications, no failover or redundancy.

Settings

This section defines your DB instance’s identity and how credentials are handled. You'll name your instance, set the master username, and choose how secrets (passwords) are stored and encrypted.

Screenshot from AWS console showing the settings for a new RDS database.

  • Enter a unique DB instance identifier (e.g., app-name-db).
  • Set a master username (e.g., postgres).
  • Choose Managed in AWS Secrets Manager for secure, auto-generated credentials. Go with self-managed only if you want full control over passwords.
  • You can also pick a custom KMS encryption key if needed, but the default option works fine for most users.

Instance configuration

This defines the type of compute resources (CPU, RAM, network) allocated to your database. The instance class determines performance, scalability, and cost.

Screenshot from AWS console showing an instance configuration form.

  • For most use cases, Standard classes (m classes) are a good starting point.
  • Choose Memory optimized (r or x classes) for analytics or large in-memory operations.
  • Select Burstable (t classes) if you're in development or need a low-cost setup.
  • Example: db.m7g.large gives you two vCPUs and 8 GiB RAM, suitable for medium workloads.

Storage configuration

This section controls the type, size, and performance of the database storage. You can select storage optimized for general use or high-performance workloads.

Screenshot from AWS console showing the RDS console with storage type selection options.

  • Choose Provisioned IOPS (io2) for low-latency, high-throughput applications. Ideal for OLTP or write-heavy systems.
  • Set Allocated Storage based on how much data you expect to store (min 100 GiB).
  • Configure Provisioned IOPS to match your performance needs (IOPS to storage ratio should be 0.5 to 1,000).

Connectivity

This section defines how your database connects to the outside world, including network settings, VPC, public access, and security groups.

Screenshot from AWS console showing instance connectivity options.

  • Keep Don’t connect to an EC2 compute resource selected unless you need EC2 access.
  • Use IPv4 for most standard setups.
  • Choose your VPC carefully. This cannot be changed after creation.
  • Select Public access: No for secure, private databases (recommended for production).
  • Use an existing or new VPC security group to manage access. Ensure port 5432 (PostgreSQL) or 3306 (MySQL) is open to allow sources.
  • You can leave the Certificate Authority as the default unless you have a custom requirement.

Database authentication

This setting controls how users authenticate to your database. You can use traditional passwords or integrate with AWS services like IAM or Kerberos for more advanced access control.

Screenshot from AWS console

  • Choose Password authentication for a standard, simple login (most common for new setups).
  • Select IAM authentication if you want to manage DB access through AWS IAM roles and policies.
  • Use Kerberos authentication only if you have an enterprise directory integration.

Monitoring

This section enables performance and activity tracking for your RDS instance using tools like Database Insights, Enhanced Monitoring, and DevOps Guru. These help you detect performance bottlenecks, analyze load, and troubleshoot issues.

Screenshot of the AWS console showing the monitoring configuration for an RDS instance.

  • Choose Database Insights – Advanced for deeper visibility and longer history (15 months). If you're cost-sensitive, Standard offers 7 days of metrics.
  • Enable Enhanced Monitoring for OS-level metrics (e.g., CPU, memory) at fine granularity like 60s intervals.
  • You can enable DevOps Guru for intelligent alerts, but it's optional and billed separately. It's great for production but not essential for dev/test.

Configuring database engine settings

Once you've selected all the infrastructure-related settings, you’ll reach a section called Additional configuration (or similar, depending on engine/version). This is where you configure the behavior and capabilities of your RDS database engine.

Here’s what you’ll typically configure:

1. Initial database name

This is the name of the first database that will be created automatically when the instance is provisioned.

  • You can always create more databases later.
  • If you leave this blank, RDS won’t create a default database. You’ll need to do it manually after the instance is ready.

2. Database port

Each database engine uses a standard TCP port:

  • PostgreSQL: 5342
  • MySQL / MariaDB: 3306
  • Oracle: 1521
  • SQL Server: 1433

Stick with the default unless you have a specific networking requirement (e.g., your application expects a different port).

3. Parameter groups

Parameter groups are like configuration templates for the database engine. They define low-level settings that influence behavior and performance.

For example, in PostgreSQL, you might configure:

  • work_mem: How much memory is used for internal sort operations
  • max_connections: How many concurrent client connections the DB can accept
  • log_min_duration_statement: Log queries that exceed a certain execution time

Each engine has its own set of tunable parameters, and AWS provides a default group. You can use the default for quick setup or clone and customize a group if your workload needs specific tuning.

4. Option groups

Option groups allow you to add advanced features that aren't available by default for some database engines.

Some examples:

  • Oracle: Transparent Data Encryption (TDE), Oracle XML DB
  • SQL Server: SQL Server Agent, Full-Text Search
  • MySQL/PostgreSQL: These typically don’t require option groups unless you’re enabling features like audit plugins

You generally don’t need to worry about option groups if you’re using PostgreSQL or MySQL for standard workloads. But if you're working with Oracle or SQL Server, check the documentation to ensure you enable necessary features.

Connecting to AWS RDS

Once your database instance is up and running, you can connect to it in multiple ways.

1. Connecting from the AWS console

AWS offers a built-in query editor for MySQL and PostgreSQL. Navigate to your instance, select Query Editor, and enter your database credentials to start running SQL commands directly from your browser.

This is ideal for quick checks or small-scale queries without needing a local SQL client.

Screenshot from AWS console showing the RDS query editor.

2. Connecting from a local machine

To connect from a local client like pgAdmin or MySQL Workbench.

  • Copy the endpoint from the AWS Console
  • Ensure the instance is publicly accessible or reachable via VPC
  • Provide the correct:
    • Host (endpoint)
    • Port (5432 or 3306)
    • Username and password

Screenshot from pgAdmin 4 desktop tool

Make sure your local machine’s IP is whitelisted in the database’s security group.

3. Security and access control

Access to RDS instances is controlled via Security Groups. You’ll need to:

  • Allow inbound access on the database port (5432 or 3306)
  • Modify the security group in the EC2 console
  • Restrict access to specific IPs or VPCs in production

You can also enhance access control using Identity and Access Management (IAM) roles and policies.

Managing and Scaling AWS RDS

Once your database is up and running, it's important to think about how you'll maintain, scale, and back it up over time. AWS RDS provides built-in features that make these tasks easier, whether you're supporting a growing application or preparing for unexpected failures.

1. Scaling your database instance

As your application grows, you may need to scale your database to keep up with demand. AWS RDS supports two types of scaling: vertical and horizontal. 

Vertical scaling involves upgrading your instance class for more CPU, memory, and network capacity. This is useful when your workload is increasing but still manageable on a single node. 

For read-heavy applications, horizontal scaling is a better option. You can add read replicas to distribute read traffic. These replicas can also be promoted to standalone instances in case of failover or migration.

2. Configuring multi-AZ for high availability

To improve fault tolerance and reduce downtime, you can enable Multi-AZ deployments. This configuration creates a standby replica in a different availability zone and keeps it in sync with the primary instance using synchronous replication. 

If the primary instance fails, RDS automatically fails over to the standby without any action required from you. Since the database endpoint remains the same, your application doesn’t need to reconnect or reconfigure. 

Multi-AZ is strongly recommended for production systems that require high availability.

3. Automating backups and snapshots

RDS makes it easy to set up automated and manual backups. Automated backups are enabled by default and let you restore your database to any point in time within your specified retention period (from 1 to 35 days). 

In addition to automated backups, you can also take manual snapshots. These are useful before making major changes like schema updates or engine upgrades. Snapshots can be retained indefinitely and used to spin up new instances if needed. 

It’s a good habit to schedule snapshots before key deployments as a safeguard.

Advanced Features of AWS RDS

Beyond the basics, AWS RDS offers a set of advanced features designed to improve performance, security, and operational efficiency. These tools help you monitor database health, manage maintenance workflows, and enforce security best practices, all essential for running production-grade systems.

1. Performance monitoring with Amazon CloudWatch

RDS integrates natively with Amazon CloudWatch, allowing you to track important performance metrics such as CPU usage, disk I/O, storage space, and database connections. These metrics are available in real time and can be used to set up alarms or dashboards.

CloudWatch is also heavily used in AWS S3 and EFS workflows, as shown in AWS Storage Tutorial on Datacamp.

For deeper insights, you can enable Performance Insights, which visualizes query performance over time. This tool helps you identify slow or resource-intensive queries, spot trends in database load, and troubleshoot bottlenecks. Combined with query tuning and indexing strategies, it’s a powerful way to optimize how your database performs under pressure.

2. RDS maintenance and patching

AWS manages software patching and maintenance for your RDS instances. You can define a maintenance window during which updates are applied. If a critical patch is released, AWS can install it immediately, or you can choose to defer it temporarily.

You’ll find all scheduled and past maintenance events in the RDS console. Keeping your database up to date ensures that you benefit from the latest performance improvements, bug fixes, and security patches, without the need to manage updates manually.

3. Encryption and security best practices

RDS supports encryption both at rest and in transit. At-rest encryption is handled by AWS Key Management Service (KMS) and can be enabled during instance creation. For data in transit, RDS supports SSL/TLS connections between clients and the database.

To further strengthen security, consider enabling IAM authentication for short-lived database credentials instead of hardcoded usernames and passwords. It's also a good idea to enforce multi-factor authentication (MFA) for all AWS users, apply the principle of least privilege with IAM policies, and log all access using AWS CloudTrail. These best practices help ensure your data remains protected and auditable.

Cost Management and Optimization

Managing cost is a key part of working with AWS services, and RDS is no exception. While it's a fully managed offering, RDS pricing can add up quickly depending on how it's configured. Understanding the cost structure and applying optimization strategies early on can help you stay within budget as your usage grows.

1. Understanding AWS RDS pricing

RDS costs are based on:

  • Instance class and hours of usage
  • Storage size and type (gp3 or io1)
  • Backup retention and snapshot storage
  • Data transfer (especially across regions or AZs)

Use the AWS Pricing Calculator to estimate and model your expected costs.

If you're preparing for certification, understanding pricing is a key part of the AWS Cloud Practitioner (CLF-C02) learning path.

2. Cost optimization best practices

There are several ways to reduce or control RDS costs. If you're running long-lived production databases, consider purchasing Reserved Instances, which offer significant discounts over on-demand pricing in exchange for a one- or three-year commitment.

To avoid overprovisioning, enable storage auto-scaling so your allocated space grows only as needed. For data that is rarely accessed but must be retained, you can offload old backups or exports to S3 or Glacier, which are much cheaper storage options.

You can also monitor resource usage using AWS Trusted Advisor, which can flag underutilized instances and recommend rightsizing. Pair this with AWS Cost Explorer and budget alerts to track your usage patterns over time and get notified when you're approaching spending limits.

Troubleshooting AWS RDS

Even with a fully managed service like RDS, issues can arise, from connectivity problems to performance slowdowns. Knowing where to look and how to respond can help you resolve issues quickly and minimize impact on your application.

1. Identifying and resolving connection issues

Connection problems are often caused by misconfigured network settings. The most common culprits include missing or incorrect security group rules, such as a closed port or restricted IP range. Another frequent issue is using the wrong endpoint or port number, especially when switching between environments.

You should also check for DNS resolution problems, particularly if your application runs in a different VPC or region. Tools like ping or telnet can help verify basic connectivity. If you're still stuck, engine logs available through the RDS console often provide useful clues; look for authentication failures or timeouts that might point to the root cause.

2. Troubleshooting performance problems

When performance starts to degrade, it's important to take a structured approach. Begin by enabling query logging via your database's parameter group settings. This helps you identify queries that are taking longer than expected.

From there, use Performance Insights to visualize query load, wait events, and user activity over time. These insights often reveal indexing issues, inefficient query structures, or high concurrency. Small changes, like adding indexes or rewriting a complex join, can often yield noticeable gains.

If tuning doesn’t help, consider upgrading your instance class or adding read replicas to scale horizontally. As always, make sure to test performance changes in a staging environment before applying them in production.

3. Dealing with failover and recovery

In a Multi-AZ deployment, RDS handles failovers automatically. If the primary instance becomes unavailable, AWS promotes the standby to primary and updates the DNS record, usually within a few minutes. This process is seamless, and your application can continue operating without manual intervention.

For Single-AZ instances, failovers are not automatic. In the event of a failure, you'll need to restore the database manually from the most recent snapshot. To reduce recovery time, it's a good idea to set up CloudWatch alarms and SNS notifications so you're alerted as soon as something goes wrong. This allows your team to respond quickly and minimize downtime.

Conclusion

Amazon RDS makes it easy to deploy, manage, and scale relational databases in the cloud, without the overhead of provisioning infrastructure or handling manual maintenance. With support for multiple engines, automated backups, high availability, and performance monitoring tools, RDS is well-suited for everything from hobby projects to mission-critical applications.

This tutorial provided the practical steps and foundational knowledge to get started.

If you're ready to explore more, the AWS Cloud Practitioner (CLF-C02) learning path is a great next step toward certification and cloud expertise.

AWS Cloud Practitioner

Learn to optimize AWS services for cost efficiency and performance.
Learn AWS

FAQs

Can I migrate an existing on-prem database to AWS RDS?

Yes, AWS offers tools like AWS Database Migration Service (DMS) to help you migrate from on-premises or other cloud databases to RDS with minimal downtime. You can migrate both schema and live data.

What’s the difference between Amazon RDS and Aurora?

Amazon Aurora is a cloud-optimized version of MySQL and PostgreSQL offered under the RDS umbrella. It's designed for higher performance and availability, often delivering 2–5x better throughput than standard RDS MySQL.

How can I automate RDS instance operations like stopping or starting instances on a schedule?

You can automate instance operations using AWS Lambda and EventBridge (formerly CloudWatch Events). This is useful for turning off dev/test databases outside working hours to save costs.

What happens if I hit my RDS storage limit?

If storage auto-scaling is enabled, RDS will increase the allocated storage automatically. If not, your instance might experience failures or performance degradation. Always monitor storage usage and configure alerts.

Can RDS be used in a serverless way like Aurora Serverless?

Traditional RDS instances are not serverless, but Aurora Serverless offers this capability. It automatically scales compute capacity based on demand and is suitable for unpredictable workloads or infrequent use.


Moez Ali's photo
Author
Moez Ali
LinkedIn
Twitter

Data Scientist, Founder & Creator of PyCaret

Topics

Learn more about AWS with these courses!

Track

AWS Cloud Practitioner (CLF-C02)

0 min
Prepare for Amazon’s AWS Certified Cloud Practitioner (CLF-C02) by learning how to use and secure core AWS compute, database, and storage services.
See DetailsRight Arrow
Start Course
See MoreRight Arrow
Related

blog

Amazon RDS vs Aurora: Which is Right For Your Data Workload?

A comparison between two leading AWS-managed database services and how they can help optimize application performance and scalability.
Flavio Matos's photo

Flavio Matos

15 min

Tutorial

AWS DMS Tutorial: Step-by-Step Guide to Migrating Databases

This tutorial walks you through setting up and using AWS DMS to migrate databases to AWS, optimize performance, and troubleshoot issues.
Rahul Sharma's photo

Rahul Sharma

15 min

Tutorial

How to Set Up and Configure AWS: A Comprehensive Tutorial

Learn how to set up and configure your AWS account for the first time with this comprehensive tutorial. Discover essential settings, best practices for security, and how to leverage AWS services for data analysis and machine learning.
Joleen Bothma's photo

Joleen Bothma

13 min

Tutorial

Amazon Aurora: What It Is, How It Works, and How to Get Started

This practical guide walks you through setting up, managing, and optimizing Amazon Aurora, with insights on performance tuning, security, and cost management.
Don Kaluarachchi's photo

Don Kaluarachchi

15 min

Tutorial

A Complete Guide to DataWarehousing on AWS with Redshift

This guide to AWS Redshift covers setting up and managing a cloud data warehouse, loading data, running complex queries, optimizing performance, integrating with BI tools, and provides best practices and troubleshooting tips for success.
Zoumana Keita 's photo

Zoumana Keita

15 min

Tutorial

AWS Lightsail: A Hands-On Introduction for Beginners

This practical guide to AWS Lightsail walks you through setting up, managing, and scaling cloud instances, making cloud hosting simple and accessible.
Don Kaluarachchi's photo

Don Kaluarachchi

12 min

See MoreSee More