Migrate RDS MySQL to S3 with Zero Downtime: AWS DMS Guide

Migrate RDS MySQL to S3 with Zero Downtime: AWS DMS Guide

Migrate RDS MySQL to S3 with Zero Downtime: AWS DMS Guide

Introduction

To transfer data from Amazon RDS (MySQL) to Amazon S3, one of the most effective tools at your disposal is the AWS Database Migration Service (DMS). This reliable, user-friendly, and fully managed service enables seamless data movement with minimal disruption to your existing systems.

Whether you’re performing a one-time bulk migration or setting up ongoing Change Data Capture (CDC) for real-time sync, AWS DMS offers flexibility, scalability, and robust performance. It significantly reduces manual overhead and mitigates risk, making it ideal for modernizing your data pipeline or building a centralized data lake.

Use Case: Migrating MySQL (Amazon RDS) to Amazon S3

Pre-requisites:

Before getting started, make sure the following are in place:

  1. Amazon MySQL is set up and accessible.
  2. Amazon S3 bucket is created to store the migrated data.
  3. AWS DMS instance is provisioned.
  4. Necessary IAM roles and permissions are assigned.

Why Use AWS DMS?

AWS Database Migration Service (DMS) enables you to migrate databases securely and quickly with minimal downtime. It supports:

  • One-time full load
  • Ongoing replication (CDC)
  • Heterogeneous and homogeneous migrations
Connection Steps

 Connect the MySQL-to-MySQL workbench using endpoints.

  • Install MySQL Workbench

Create Source and Target Endpoints

Create a source endpoint for your on-premises MySQL server and a target endpoint for your Aurora cluster.

Source Endpoint (On-Premises MySQL):

  • Endpoint Type: Source endpoint.
  • Engine: mysql
  • Server Name: The IP address or hostname of your on-premises MySQL server.
  • Port: 3306 (default MySQL port).
  • Username: Your MySQL username with replication privileges.
  • Password: Your MySQL password.
  • Database Name: The name of the database you want to migrate.
image 39 - aws dms

Target Endpoint (s3):

  • Endpoint Type: Target endpoint.
  • Engine: Aurora
  • Server Name: The endpoint of your RDS MySQL.
  • Port: 3306 (default MySQL port).
  • Username: Your username, like admin.
  • Password: Your MySQL password.
  • Database Name: The name of the database you want to migrate (or create a new database).
image 39 - aws dms

Create a table on MySQL

In the AWS Management Console, navigate to the RDS service and create a new Aurora MySQL cluster.

  • Choose Database Option: Select “MySQL-compatible.”
  • Engine Version: Select a MySQL-compatible Aurora engine version compatible with your on-premises MySQL version.
  • Templates: Select “Production” or “Development/Testing” based on your environment.
  • Instance Configuration: Choose the DB instance class (e.g., db.r5.large) based on your workload requirements.
Picture3 - aws dms

Steps for Migration

Step 1: Create RDS MySQL Database
  • Navigate to Amazon RDS in the AWS console.
  • Select MySQL as the engine.
  • Provide a DB name and configure settings as required.
Picture4 - aws dms
Step 2: Create an AWS DMS Replication Instance

In the AWS Management Console, navigate to the DMS service and create a new replication instance.

  • Name: Give your replication instance a descriptive name.
  • Instance Class: Choose the instance class based on your database size and replication requirements. dms.t3.medium is a good starting point for smaller databases.
  • VPC: Select the VPC where your s3 and on-premises MySQL server are located.
  • Security Group: Configure the security group to allow inbound traffic from your on-premises MySQL server to the replication instance.

Publicly Accessible: Set to ‘No’ unless your on-premises MySQL server is publicly accessible.

Step 3: Create an S3 Bucket
  • Open S3 in AWS Console.
  • Create a new bucket in a region close to the RDS instance.
  • Ensure IAM permissions allow read/write access for DMS.
Step 4: Create a Database Migration Task

Create a database migration task to migrate data from your on-premises MySQL server to your Aurora cluster.

  • Task Identifier: Give your task a descriptive name.
  • Replication Instance: Select the replication instance you created earlier.
  • Source Database Endpoint: Select the source endpoint for your on-premises MySQL server.
  • Target Database Endpoint: Select the target endpoint for your s3.
  • Migration Type: Choose one of the following options like migration and replication and migration & Replication.
  • Table Mappings: Define the tables you want to migrate. You can migrate all tables or select specific tables.
Step 5: Start the Migration Task

Start the database migration task. DMS will begin migrating data from your on-premises MySQL server to your Aurora cluster.

Step 6: Monitor the Migration Task

Monitor the progress of the migration task in the DMS console. You can view the status of the task, the number of tables migrated, and any errors that occur.

Step 7: Verify the Migration

After the migration is complete, connect to your s3and verify that the database, tables, data, stored procedures, triggers, and events have been successfully migrated.

Step 8: (Optional) Delete DMS Resources
  • Delete the DMS replication instance
  • Remove the endpoints
  • Retain or archive the S3 data as per your retention policy
  • To prevent additional costs

Conclusion

Migrating from Amazon RDS to Amazon S3 with AWS DMS is a strategic and high-impact move toward building a modern, scalable, and analytics-ready data platform. With its ability to deliver near-zero downtime, continuous data replication, and cost-efficient storage, AWS DMS empowers you to accelerate digital transformation with confidence.

Unlock the full potential of your data infrastructure—kickstart your AWS DMS migration today and drive intelligent, data-driven outcomes!

-Lakshmi Devi
Data Engineer