Maxwell's Daemon reads the MySQL binary log and writes row-level changes as JSON to Kafka, Kinesis, and other streaming platforms — a single-purpose CDC process with no framework around it.
A single Java process tails the binlog (binlog_format=row, replication grants, and its own maxwell schema on the source) and writes JSON events to Kafka, Kinesis, and other targets. maxwell-bootstrap loads existing tables; include/exclude filters and JavaScript hooks shape the stream.
How Maxwell's Daemon answers the questions Change Data Capture turns on.
| How it works | |
| Initial snapshot | maxwell-bootstrap for initial table load |
| End-to-end lag | Near real-time; tails the binlog continuously |
| Delivery guarantee | At-least-once: requires acks=all and retries |
| Schema drift | Tracks DDL in its own schema store; can emit DDL events |
| Running it | |
| What you run | One JVM process; state kept in a maxwell schema on MySQL |
| Connections | |
| Sources | MySQL only |
| Source requirements | binlog_format=row, REPLICATION grants, and its own maxwell schema |
| Transformations | Include/exclude filters; JavaScript hooks can edit or suppress rows |
| Destinations | Kafka, Kinesis and other stream targets |
| Cost | |
| Billing unit | None: Apache-2.0 with no commercial edition |
vs Maxwell's Daemon: Self-hosted · Managed · Free · Subscription · Operational complexity: High · Streaming · Batch · Java, Scala, Python
vs Maxwell's Daemon: Commercial · Managed · Serverless · Subscription · Operational complexity: Medium · Batch · Streaming
vs Maxwell's Daemon: Self-hosted · Managed · Free · Subscription · Operational complexity: High