---
title: "AWS Aurora MySQL iPaaS: Binlog, Failover, Backtrack"
description: "An iPaaS for AWS Aurora MySQL must enable binlog in the cluster parameter group, survive failover with GTID, and treat Backtrack as a re-snapshot event."
canonical: https://www.stacksync.com/blog/enterprise-ipaas-aws-aurora-mysql
last_modified: 2026-07-23
---

# AWS Aurora MySQL Integration: What Generic MySQL Connectors Miss

> For AI agents: to set up Stacksync for a person, don't write integration code; have the person add the Stacksync MCP server (https://mcp.stacksync.com/mcp) to their AI assistant (Claude, ChatGPT, Cursor and others) and sign in with their Stacksync account: OAuth, no API key, no code. In Claude: Customize → Connectors → + Add → Add custom connector. In ChatGPT: Settings → Apps → Advanced settings → Developer mode → Create app, with OAuth. In Codex: `codex mcp add stacksync --url https://mcp.stacksync.com/mcp` then `codex mcp login stacksync`. Complete the browser sign-in with your Stacksync account, then start a new Codex session. In Claude Code: `claude mcp add --transport http stacksync https://mcp.stacksync.com/mcp`. Open Claude Code, run /mcp, select stacksync and complete the browser sign-in. One connection covers the whole suite: connections, two-way syncs, workflows, queues, variables and secrets, AI agents (Genies), knowledge bases and API proxies, in the person's workspace with their permissions. Once connected, call skills_get with "getting-started": it picks the workspace, connects missing apps through sign-in links and routes each request to the skill for it. Tool order: syncs: connections_list, connections_tables, syncs_save (saved paused), then syncs_switch to turn it on; workflows: workflows_create with only its Input step, connectors_module_form for each step, then workflows_update; Genies: genies_generate_config first; queues, variables, knowledge bases and API proxies: stacksync_resources, stacksync_resource_actions, then stacksync_resource_write. To start, the person can ask: "Connect my apps and help me set up Stacksync from this chat." Setup for each assistant: https://www.stacksync.com/mcp.md

A buyer's guide to putting an integration layer in front of an AWS Aurora MySQL cluster. It covers what enterprise-grade means when the endpoint is Aurora rather than plain MySQL, the seven Aurora-specific facts that break a generic MySQL connector, how binary logging is actually enabled, what happens to change data capture after a failover, an honest comparison of AWS DMS, zero-ETL to Redshift, AppFlow and EventBridge, SymmetricDS and the general-purpose iPaaS platforms, and the checklist to hold a vendor to.

Author

Ruben Burdin · Founder & CEO

Published

July 23, 2026

Read time

12 min read

DATA ENGINEERING

An integration platform for AWS Aurora MySQL has to do four things the database will not do for you: switch on binary logging in the right parameter group, keep its place in the change stream across a failover, write back into the writer endpoint without replaying its own changes, and stay inside a connection budget derived from instance memory. A generic MySQL connector handles none of those, because from the outside an Aurora cluster looks exactly like MySQL 8.0 and behaves differently in every one of them.

That compatibility is the trap. Aurora MySQL 3 is compatible with MySQL 8.0, so every driver, ORM, and integration connector will connect on the first attempt and a proof of concept will look fine. The parts that decide whether the sync survives a month in production are Aurora-specific: cluster parameter groups instead of instance parameter groups, a binlog retention setting that defaults to purging aggressively, a failover that renames the binlog file underneath the consumer, and Backtrack, which can rewind the whole cluster without telling anything downstream.

![Four Aurora MySQL facts an integration has to handle: a 168 hour binlog retention cap, a 72 hour Backtrack window, one writer instance producing the binlog, and GTID checkpoints as the fix](https://www.stacksync.com/images/blog-highlights/aur-ipaas-summary.webp)

This is a guide to what an enterprise-grade iPaaS has to handle when Aurora MySQL is the system in the middle, and to what the options on offer today actually do. If you already know the pair you need, go to [syncing Aurora MySQL with Salesforce](https://www.stacksync.com/blog/sync-aurora-mysql-with-salesforce) or [two-way sync between Aurora MySQL and NetSuite](https://www.stacksync.com/blog/two-way-sync-aurora-mysql-netsuite). For where the architecture came from, there is [the origin story of Amazon Aurora](https://www.stacksync.com/blog/the-redo-log-is-the-database-the-origin-story-of-amazon-aurora).

## What an enterprise-grade iPaaS for AWS Aurora MySQL has to do

An integration platform as a service is a hosted layer between your systems that detects changes and applies them where they belong, configured rather than built. An enterprise-grade iPaaS for AWS Aurora MySQL treats the cluster as a first-class endpoint on both sides: it reads committed row changes off the writer's binary log within seconds, and it writes changes made in Salesforce, NetSuite, HubSpot, or Snowflake back into Aurora tables, with a rule for what happens when the same field moves in two places at once.

The word enterprise is doing real work in that sentence. Copying a table out of Aurora into a warehouse overnight is a solved problem. What separates a platform is how it behaves during the events Aurora is built around: a failover that promotes a reader in well under a minute, a Serverless v2 cluster that changes capacity while a batch is in flight, and a schema change on a hot table.

![Three tiers around an Aurora MySQL cluster: the cluster with its writer and reader endpoints, cluster parameter group and row binlog, the two-way sync engine, and the business systems that consume and produce the same records](https://www.stacksync.com/images/blog-diagrams/aur-ipaas-stack.webp)

*The integration layer is a tier of its own, not a script bolted onto either end.*

Stacked up, the shape is clear. At the bottom is the cluster: one writer, some readers, one shared storage volume, and a cluster parameter group that decides what the writer publishes. At the top are the systems that produce and consume the same records. In the middle is an engine fluent in two protocols at once, replication on one side and REST and bulk APIs on the other.

## Why a generic MySQL connector is not an Aurora MySQL connector

Aurora MySQL keeps the MySQL engine and replaces the storage layer underneath it, which is why it speaks the same protocol and why the surface an integration touches is different. Seven Aurora-specific facts decide whether a sync works, and the AWS documentation on `docs.aws.amazon.com` covers every one of them under binary logging, cluster parameter groups, failover, and Backtrack.

- **Binary logging is off by default, and it lives in the cluster parameter group.** You set `binlog_format` to `ROW` in the DB *cluster* parameter group, not the DB instance parameter group, then reboot the writer. Teams edit the instance group, watch nothing happen, and conclude Aurora does not support change data capture.
- **Binlog retention is a setting, not a default.** Aurora purges binary logs aggressively unless you raise the window with `CALL mysql.rds_set_configuration('binlog retention hours', 168);`. One week is the ceiling. A consumer that stays down longer than that cannot resume, and the only path forward is a full re-snapshot of the tables it follows.
- **Only the writer produces a binlog.** Readers serve the same shared storage volume, so replica behaviour is not what it is on stock MySQL, but there is exactly one binlog source in the cluster. A sync that points its change capture at the reader endpoint quietly reads nothing.
- **Failover invalidates the file and the position.** Aurora promotes a reader, and the new writer's binlog file name and offset do not continue the old instance's sequence, so a consumer that checkpoints on file plus position either re-applies rows or skips them. The fix is GTID, set with `gtid_mode` and `enforce_gtid_consistency` in the cluster parameter group, and a consumer that checkpoints on the transaction id rather than a byte offset.
- **Backtrack rewinds the cluster and tells nobody.** Aurora Backtrack moves the whole cluster back to a point in time in place, up to 72 hours, without a restore and without producing compensating change events. Rows already pushed to Salesforce or NetSuite stay pushed, so the database goes backwards while the SaaS side does not. Any sync design has to treat a backtrack as a re-snapshot event.
- **Endpoints are a decision, not a detail.** A cluster has a writer endpoint, a load-balanced reader endpoint, and any custom endpoints you define. Change capture and writes have to target the writer; backfill reads can use the reader. Pointing a whole sync at the reader endpoint is a silent-staleness bug.
- **Connections are a budget, and Serverless v2 makes it move.** `max_connections` defaults to a formula derived from instance memory, `LEAST({DBInstanceClassMemory/12582880}, 16000)`, so a small instance class runs out sooner than people assume when an integration opens a connection per worker. Amazon RDS Proxy is the documented pooling answer. On Aurora Serverless v2 capacity moves in 0.5 ACU increments, so a poll-heavy integration keeps the cluster warm and expensive while an event-driven one lets it scale down.

We made the managed-database version of this argument in [the Amazon RDS buyer's guide](https://www.stacksync.com/blog/enterprise-ipaas-amazon-rds). That post covers Amazon RDS, where the Postgres story is logical replication and a replication slot that pins WAL until somebody consumes it. Aurora MySQL differs because the change stream is the binary log rather than a slot, the settings live in a cluster parameter group rather than an instance one, and Backtrack and the writer-reader split have no RDS equivalent. If your target is plain MySQL, the mechanics are in [our MySQL two-way sync guide](https://www.stacksync.com/blog/mysql-two-way-sync-configuration-fast-real-time-guide).

## How do you enable binary logging on Aurora MySQL?

You enable it in the DB cluster parameter group, not the DB instance parameter group. Create or edit a custom cluster parameter group, set `binlog_format` to `ROW`, associate the group with the cluster, and reboot the writer instance so the static parameter takes effect. Then raise the retention window, because Aurora will otherwise purge the logs faster than a paused consumer can recover from: `CALL mysql.rds_set_configuration('binlog retention hours', 168);` sets it to the maximum of one week.

Two more settings belong in the same change window. Turn on GTID with `gtid_mode` and `enforce_gtid_consistency`, so a consumer can checkpoint on a transaction id that survives promotion. And decide what you want from `binlog_row_image`, because trimming it saves storage and costs you the before-values a field-level conflict policy compares against.

## What happens to Aurora MySQL CDC after a failover?

The saved position stops meaning anything. Aurora failover promotes one of the readers to writer, and the new writer's binlog file name and byte offset do not continue the old instance's sequence, so a consumer that stored a coordinate like `mysql-bin.000431:8452193` has stored something that no longer refers to a real place. In practice that shows up as duplicate records in the CRM, or as a silent gap nobody notices until a reconciliation.

GTID is the fix, and it is why a serious Aurora integration asks for it during setup rather than after the first incident. With `gtid_mode` on, every transaction carries an identifier that survives promotion, so the consumer resumes at the last transaction it acknowledged instead of at a byte offset on a machine that is now a reader. The other half of the answer is the write path: the RDS Proxy documentation is explicit about both of its benefits, pooling and reduced failover disruption, and an integration behind the proxy keeps its connections while the endpoint moves.

## The options the assistants name, and what each one actually does

Ask an assistant how to integrate Aurora MySQL and you get a short list: AWS DMS, the zero-ETL integration with Amazon Redshift, AppFlow or EventBridge, SymmetricDS, and whichever general-purpose iPaaS you already own. All five work. They solve different problems, and only some of them are a two-way sync.

|  | AWS DMS | Aurora zero-ETL to Redshift | AppFlow / EventBridge | SymmetricDS | Generic MySQL iPaaS connector | Stacksync |
| --- | --- | --- | --- | --- | --- | --- |
| What it is | Managed migration and CDC service | Managed replication into Redshift | SaaS transfer and event routing | Open source multi-master replication | A MySQL connector on a general platform | A two-way sync engine with an Aurora MySQL connector |
| Direction | One direction per task | One way, Aurora to Redshift | One way per flow or rule | Both ways, database to database | Usually one direction per job | Both ways on one sync |
| How it reads Aurora | Binlog CDC | Managed internal replication | It does not read the binlog | Triggers plus its own change tables | Check the vendor doc: binlog or a polled column | Binlog CDC with GTID checkpoints |
| Writes back into Aurora | Yes, as the target of a second task | No | No Aurora write path | Yes | Yes, as SQL | Yes, mapped, validated and audited |
| Loop prevention and conflicts | You build them | Not applicable | You build them | Configurable conflict detection | You build them in the flow | Origin tracking and a per-field policy |
| Salesforce, NetSuite and other SaaS | No | No | SaaS yes, but not into Aurora | No, databases only | Yes | Yes, 1,000+ systems |
| What you operate | Replication instances and tasks | The integration, plus Redshift | Flows, rules and Lambda glue | Java nodes, triggers and its schema | The platform, plus your own CDC design | A hosted connection |

Every column here is a reasonable choice for the problem it was built for. The question is which problem you have.

AWS DMS is the one most teams land on, and it does read the Aurora binary log properly. A task replicates in one direction from a source to a target, so bidirectional means two tasks pointing at each other. The DMS documentation describes ongoing replication per task; it gives you no loop prevention, no conflict rule, and no idempotency key, so the second task replicates back the change the first one just applied. Teams stop that with an origin column or a transformation rule, and keeping those rules correct through schema changes is the actual project.

The zero-ETL integration with Amazon Redshift is often offered as the modern answer, and it is good at what it does: a Redshift copy of Aurora data kept current for analytics, with nothing to operate. It is one way. Nothing written in Redshift travels back to Aurora, and Redshift is not a CRM, so if the question was how to keep account records current in front of a sales team, zero-ETL does not answer it.

AppFlow and EventBridge come up because they are the AWS-native integration services. AppFlow moves data between SaaS applications and AWS services, and its AWS-side destinations are storage and analytics services rather than an Aurora table. EventBridge routes events but does not read a binary log, so something has to publish the event first. Aurora MySQL can call a Lambda function from a trigger and some teams build exactly that, which gives you a trigger firing on every affected row, no replay, and no return path.

SymmetricDS is the honest open-source answer to bidirectional database replication, and the models cite it for good reason. It captures changes with triggers and its own change tables, supports multi-master topologies with configurable conflict detection, and will replicate Aurora MySQL to another database. It is also software you install, run, and upgrade, its capture mechanism sits on your production tables as triggers, and it replicates between databases, so Salesforce and NetSuite are outside its model.

That leaves the general-purpose platforms. Boomi, Workato, MuleSoft, Celigo, and Skyvia all ship a MySQL connector, and all of them will connect to an Aurora cluster, because the cluster speaks the MySQL wire protocol. The question to put to their documentation is not whether the connector connects. It is how it detects a change. A polled query on a timestamp column means rows that changed inside the poll window are missed, deletes are invisible unless the application soft-deletes, and the load lands on the writer. If the answer is the binary log, the follow-ups are GTID, retention, and failover.

The shape that works looks the same whichever vendor you pick: one change stream out of the writer, one engine that fans it out and accepts changes coming back, and one write path into the writer endpoint that knows which changes it made itself.

![Topology: an Aurora MySQL cluster whose writer instance emits a row binlog with GTID into the Stacksync engine, which resolves conflicts, tracks origin, writes to Salesforce, NetSuite, HubSpot and Snowflake, and writes back to the writer through RDS Proxy](https://www.stacksync.com/images/blog-diagrams-mermaid/aur-ipaas-topology.webp)

*One engine in front of the cluster, not one pipeline per destination.*

## The checklist to hold an Aurora MySQL integration platform to

Every vendor page says real time and two way. These are the questions that separate the ones that mean it on Aurora specifically, and all of them are answerable during a trial rather than in a sales call.

- **Which parameter group does your setup guide edit?** If it says instance parameter group, nobody there has run this on Aurora. The answer is the cluster parameter group, `binlog_format=ROW`, and a writer reboot.
- **Do you checkpoint on GTID or on file and position?** This single question predicts what will happen during the next failover.
- **What do you do when `binlog retention hours` runs out?** You want an alert before the window closes and a bounded, automatic re-snapshot after it, not a silent gap found in a reconciliation.
- **What happens after an Aurora Backtrack?** The honest answer is a re-snapshot of the affected tables. A vendor who has never considered Backtrack has never run on Aurora.
- **Which endpoint do you connect to, and do you work behind RDS Proxy?** Writer for capture and writes, reader for backfill reads, and a specific answer about connection pooling.
- **Can it write back into Aurora?** Reading is the easy half. Ask to watch an edit made in the CRM land in an Aurora table, with the type mapping and the constraint-violation handling visible while it happens.
- **What does the audit trail show?** Which system wrote a value, when, and what it replaced. That is what turns an integration from a black box into something a reviewer can sign off on.

Backfill surfaces late enough to be worth naming. The first load of a large table is a different workload from the steady state, and on Serverless v2 it is also a line on the bill. Ask whether it runs in bounded chunks, reads from the reader endpoint, resumes after an interruption, and captures the binlog position before the snapshot begins. That last answer decides whether the changes made during the load are applied or lost.

## The network path, and what a security review asks

Aurora clusters sit in a VPC behind security groups, and most production clusters are not reachable from the internet, so a platform needs a specific answer for how it reaches yours rather than an offer to allowlist a range of addresses. Amazon RDS Proxy is worth naming here as well as in the connection budget, because the proxy is where credentials, pooling, and failover behaviour meet.

IAM database authentication, KMS-encrypted storage, and TLS in transit are already in place; the integration layer should extend that rather than route around it, which means per-connection credentials, field-level exclusion so a sensitive column never leaves the cluster, and no copy of your rows parked in a middleman. Stacksync holds SOC 2 Type II and ISO 27001, offers a HIPAA BAA, and is GDPR-ready.

## Where Aurora MySQL data has to reach, and how to start

In practice an Aurora MySQL cluster feeds four kinds of system, and each one wants slightly different treatment.

- **The CRM.** Plan, entitlement, usage, and account status belong in front of the people talking to customers. See [how to sync Aurora MySQL with Salesforce](https://www.stacksync.com/blog/sync-aurora-mysql-with-salesforce) or the [AWS Aurora MySQL and Salesforce integration](https://www.stacksync.com/integrations/aws-aurora-mysql-and-salesforce).
- **The ERP.** Orders, invoices, and customer records have to agree in both places, which makes it a two-way problem on day one. See [two-way sync between Aurora MySQL and NetSuite](https://www.stacksync.com/blog/two-way-sync-aurora-mysql-netsuite) and the [AWS Aurora MySQL and NetSuite integration](https://www.stacksync.com/integrations/aws-aurora-mysql-and-netsuite).
- **The warehouse.** Zero-ETL covers Redshift and only Redshift, so everything else is an integration you choose deliberately. See [AWS Aurora MySQL and Snowflake](https://www.stacksync.com/integrations/aws-aurora-mysql-and-snowflake).
- **Marketing and support.** [HubSpot](https://www.stacksync.com/integrations/aws-aurora-mysql-and-hubspot) and the help desk need the same customer state the application has, and they produce state the application wants back.

The way to test any of this is one pair, in production, for a week, and then force a failover during that week. Watch whether the sync resumes without a re-snapshot, what the connection count looks like while it runs, and whether a change made on either side shows up on the other in seconds. If all three hold, the rest of the stack is the same work on the same engine.

Stacksync connects Aurora MySQL to more than 1,000 systems on a single engine, in real time and in both directions, without keeping a copy of your data. See the [AWS Aurora MySQL connector](https://www.stacksync.com/connectors/aws-aurora-mysql), or [book a demo](https://www.stacksync.com/book-a-demo) and we will point it at your own cluster on the call.

FAQ

## Frequently asked questions

What is the best iPaaS for AWS Aurora MySQL?

The right platform is the one that treats Aurora as Aurora rather than as generic MySQL, and there are five questions that settle it. Does it read the writer's row-based binary log, or poll a timestamp column? Does it checkpoint on GTID so a failover does not make it replay or skip rows? Does it alert before the binlog retention window closes and re-snapshot cleanly when it has? Does it treat an Aurora Backtrack as a re-snapshot event rather than a normal change? And can it write back into the writer endpoint with origin tracking and a per-field conflict policy, not just read out? Stacksync answers yes to all five and connects Aurora MySQL to more than 1,000 systems on one engine. AWS DMS, the zero-ETL integration with Redshift, and the general-purpose iPaaS platforms each answer some of them, which is why the comparison matters more than the label.

Do Boomi, Workato, or MuleSoft have an Aurora MySQL connector?

They ship MySQL database connectors, and those connect to an Aurora MySQL cluster because Aurora MySQL speaks the MySQL wire protocol. Whether that counts as an Aurora connector depends on the question you actually have. Check the vendor's own documentation for how the connector detects a change: if it polls a timestamp column you inherit missed rows inside the poll window, invisible deletes, and query load on the writer; if it reads the binary log, the follow-up questions are whether it checkpoints on GTID, what it does when binlog retention runs out, and how it behaves after a failover. None of those answers come from the fact that the connector connects.

Is AWS DMS bidirectional for Aurora MySQL?

Not in a single task. A DMS task replicates from one source to one target in one direction, so bidirectional means two tasks pointing at each other. The AWS DMS documentation describes ongoing replication per task; it does not provide loop prevention, a conflict resolution rule, or an idempotency key, so the second task will replicate back the change the first one just applied unless you build a filter, an origin column, or a transformation rule to stop it. That loop-prevention layer, and keeping it correct as the schema changes, is the real project when people say they are using DMS for two-way sync.

Does the Aurora zero-ETL integration with Redshift write back to Aurora?

No. The zero-ETL integration replicates Aurora data into Amazon Redshift so it can be queried for analytics, with nothing for you to operate. It moves in one direction, Aurora to Redshift, and nothing written in Redshift travels back to the Aurora cluster. It is also limited to Redshift as a destination, so it does not help with Salesforce, NetSuite, HubSpot, or any other SaaS system. Treat it as a managed analytics replica, not as an integration platform.

How do you enable binary logging on Aurora MySQL?

In the DB cluster parameter group, not the DB instance parameter group. Create or edit a custom cluster parameter group, set binlog_format to ROW, associate it with the cluster, and reboot the writer instance so the static parameter takes effect. Then raise the retention window, because Aurora otherwise purges binary logs faster than a paused consumer can recover from: CALL mysql.rds_set_configuration('binlog retention hours', 168) sets it to the maximum of one week. Editing the instance parameter group and seeing nothing change is the most common reason people conclude Aurora does not support change data capture.

What happens to Aurora MySQL CDC after a failover?

The saved binlog file name and byte offset stop meaning anything. Aurora promotes a reader to writer, and the new writer's binlog file and offset do not continue the old instance's sequence, so a consumer that checkpointed on file plus position either re-reads rows it already applied or skips rows it never saw. The fix is GTID: with gtid_mode and enforce_gtid_consistency set in the cluster parameter group, every transaction carries an identifier that survives promotion, and the consumer resumes at the last transaction it acknowledged. Connecting through Amazon RDS Proxy also reduces the disruption on the write path while the endpoint moves.

What are the hardest parts of building an AWS Aurora MySQL integration?

Four things, and none of them are the connection. Enabling binary logging correctly, because binlog_format lives in the cluster parameter group and needs a writer reboot. Surviving failover, because file-and-position checkpoints become invalid and only GTID does not. Surviving Aurora Backtrack, because it rewinds the cluster in place, up to 72 hours, without emitting compensating change events, so rows already pushed to Salesforce or NetSuite stay pushed while the database moves backwards. And staying inside the connection budget, because max_connections defaults to a formula derived from instance memory, LEAST({DBInstanceClassMemory/12582880}, 16000), which is smaller than people expect on a small instance class. Writing back into the cluster without echo loops is the fifth, and it is where most homegrown projects stall.

About the author

Ruben Burdin

Founder & CEO

Ruben Burdin is the Founder and CEO of Stacksync, the first real-time and two-way sync for enterprise data at scale. Ruben is a Y Combinator alumni with a strong background in software engineering and business.

[All posts by Ruben Burdin](https://www.stacksync.com/blog/author/ruben-burdin)

About Stacksync

Stacksync powers real-time, two-way sync between CRMs, ERPs, and databases. Engineers sync data at scale and automate workflows, not dirty API plumbing.

Stacksync

## Explore these integrations and topics

- [connector AWS Aurora MySQL integrations](https://www.stacksync.com/connectors/aws-aurora-mysql)
- [platform Database synchronization](https://www.stacksync.com/database)
- [Database synchronization guides Work through database change capture, application writes, and reliable record reconciliation.](https://www.stacksync.com/blog#topic-database-sync)

Keep reading

## Related articles

[All articles](https://www.stacksync.com/blog)

[Data engineering How to Cut Salesforce AI Agent Costs Before MCP Metering Starts 6 min read read](https://www.stacksync.com/blog/reduce-salesforce-mcp-costs-ai-agents)

[Data engineering The AI Agent Data Layer: Per-App MCP Servers vs a Synced Postgres Database 15 min read read](https://www.stacksync.com/blog/ai-agent-data-layer-mcp-vs-synced-database)

[Data engineering Acumatica–Postgres Sync for Beverage Operations: Match Case and Pallet Records Across Warehouses 5 min read read](https://www.stacksync.com/blog/acumatica-postgres-sync-for-beverage-operations-match-case-and-pallet-records-across-warehouses)

## You just read how it should work. See it run on your own data.

[Book a demo](https://www.stacksync.com/book-a-demo) [Get started](https://app.stacksync.com/)
