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.
Checked against Weld and vendor docs on
Your own tables, picked when you set up the sync.
- Extract
- Load
- Keep in sync
- mysql.Synced
- mysql.Syncing
- mysql.Synced
- mysql.Synced
Trusted by data and AI teams
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.
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.
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 to sync MySQL to Amazon Redshift with Weld.
In the app, with the API or an agent.
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.
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.
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.
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 descAsk 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.
Which MySQL tables do we have in Amazon Redshift, and which is the largest?
Looking up what Weld has synced from MySQL.
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.
Keep reading.
Guides, docs and schema.
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.