MySQL to Amazon Redshift

Replicate MySQL tables into Amazon Redshift for analytics, kept current with binlog CDC or incremental syncs. Weld stages data in your own S3 bucket and loads it into Redshift Serverless or a provisioned cluster with temporary IAM credentials.

4.8 on G2
MySQLSource
WeldWeld
Amazon RedshiftWarehouse

Checked against Weld and vendor docs on

Weld · New sync
MySQLSourceMySQLConnected
Tables to sync

Your own tables, picked when you set up the sync.

  • Extract
  • Load
  • Keep in sync
Amazon RedshiftDestinationAmazon RedshiftReady
mysql schema
  • mysql.Synced
  • mysql.Syncing
  • mysql.Synced
  • mysql.Synced

Trusted by data and AI teams

  • Flatpay
  • Holafly
  • eComplete
  • Dishoom
  • Danish Endurance
  • Female Invest
  • Son of a Tailor
  • Onomondo
  • Medik8
  • Pas Normal Studios
Options

Three ways to get MySQL data into Redshift

AWS has its own options here, and if your MySQL already runs on Aurora or RDS, zero-ETL is worth a look first. The choice comes down to where MySQL runs, what else you load into Redshift, and how much AWS plumbing you want to own.

A

Amazon Redshift zero-ETL integration

Best for
Aurora MySQL or RDS for MySQL on AWS
Effort
Low to medium: create the integration in AWS
Freshness
Initial load, then continuous replication
Good to know
Supported sources include Aurora MySQL, RDS for MySQL and self-managed MySQL. Costs follow the Redshift, RDS, Aurora and Glue pricing pages; check the limitations and supported Regions for your source.
A

AWS Database Migration Service

Best for
Migrations and replication you run inside AWS
Effort
Medium: replication instance, endpoints, tasks
Freshness
Full load, then ongoing replication
Good to know
CDC needs binlog_format ROW and binlog_row_image FULL. DMS does not use GTIDs and does not propagate ON DELETE CASCADE changes to child tables, because MySQL does not log them.

Weld

Best for
MySQL alongside SaaS sources in one Redshift warehouse
Effort
Medium once: S3 bucket and IAM role; low per source
Freshness
Binlog CDC, or incremental syncs on your schedule
Good to know
CDC streams inserts, updates and deletes from the binlog. Merge syncs need a primary key and an updated_at cursor. Works with MySQL inside or outside AWS.
How it works

How to sync MySQL to Amazon Redshift with Weld.
In the app, with the API or an agent.

Weld · New MySQL sync
MySQLConnection settingsMySQLConnected
Prepare S3 and IAM

Create a private S3 bucket for staging, an IAM policy for it, and an IAM role that Weld's AWS account and Redshift can assume, with an external ID of your choice.

Continue
Data

What lands in Amazon Redshift
From MySQL to Amazon Redshift.

A database has no fixed set of tables to list: what lands in Redshift is your own tables, one per table you select, plus what Weld leaves in S3 along the way.

  • Your selected tables

    Each lands with its columns, minus any you removed and with any you chose to hash, loaded from S3 with COPY.

  • _weld_synced

    The time Weld synced each row. Use it to check freshness and to build incremental models in Redshift.

  • Staged files in S3

    Weld uploads each load to your bucket as gzip NDJSON before loading Redshift and does not expire them, so the bucket doubles as a raw copy of what was loaded.

Example query

How many rows reached a table each day this week?
In Amazon Redshift SQL.

Runs in Redshift, assuming you named the destination schema mysql. Replace orders with one of your tables. _weld_synced is added by Weld; a full sync stamps every row, an incremental one only the rows it changed.

Amazon Redshift · query
1select2  date_trunc('day', _weld_synced) as synced_day,3  count(*) as rows_synced4from mysql."orders"5where _weld_synced >= dateadd(day, -7, getdate())6group by 17order by 1 desc
Weld MCP server

Ask your agent.
It queries Amazon Redshift for you.

Connect Claude, Cursor, ChatGPT or your own agent to Weld over MCP. It reads the MySQL context, finds the tables it needs and runs the query in Amazon Redshift.

Claude CodeOpus 5
>

Which MySQL tables do we have in Amazon Redshift, and which is the largest?

Looking up what Weld has synced from MySQL.

●weld·search_available_references
⎿raw.mysql.*
tables, columns and freshness
●weld·get_reference_schema
⎿columns, types and nullability
●weld·run_query
⎿select count(*) from {{raw.mysql.…}}
submitted
●weld·get_query_status
⎿DONE
●weld·get_query_result
⎿rows returned
✓Answered from MySQL data in Amazon Redshift
>Ask about your MySQL data
Under the hood

Things to know.
Before you sync MySQL.

Associate the IAM role with Redshift
Weld assumes the role to get temporary credentials, and Redshift assumes it to read staged files during COPY. If the role is not associated with the namespace or cluster, the connection still tests green, but every sync fails at the load.
Grant CREATE and TEMPORARY on the database
Every load starts by creating the destination schema if it is missing and stages in a temporary table. Redshift refuses the first without CREATE on the database, even when the schema already exists.
CDC needs row-based binlogs and retention
Set binlog_format to ROW, binlog_row_image to FULL and a server_id. Weld recommends at least 3 days of binlog retention and will not offer CDC under 6 hours. On RDS and Aurora, set retention with mysql.rds_set_configuration, up to 7 days.
Incremental syncs do not see deletes
Merge and append modes miss rows deleted in MySQL. Use CDC, or schedule a full sync at midnight on tables where deletes matter.
Staged files are not cleaned up
Weld does not expire objects in the S3 bucket. Add a lifecycle rule if you do not want to keep them; it removes only the raw files, not data in Redshift.
FAQ

Common questions.
About MySQL to Amazon Redshift.

Start syncing MySQL to Amazon Redshift.

Set up your MySQL data pipeline in minutes. No credit card required. Free for 14 days.

MySQLSource
WeldWeld
Amazon RedshiftWarehouse