Change data capture tools fall into three groups in 2026. Open source engines you run yourself, such as Debezium, Filament, PeerDB, and OLake. Managed pipelines priced by row, credit, or gigabyte, such as Fivetran, Airbyte Cloud, and Estuary. And enterprise suites such as Striim, Qlik Replicate, and AWS DMS. The pick depends on which logs a tool reads, how its first copy meets the stream, and how the bill grows.
Tool | Capture | CDC sources | Deploy | License | Pricing unit |
|---|---|---|---|---|---|
Filament | pgoutput, binlog | Postgres, MySQL | Binary, Go library, Helm | Apache 2.0 | None |
Debezium | Log, per connector | Postgres, MySQL, SQL Server, Oracle, MongoDB, Db2 | Kafka Connect, Server, embedded | Apache 2.0 | None |
PeerDB | pgoutput, binlog, oplog | Postgres, MySQL, MongoDB | Docker Compose, ClickHouse Cloud | AGPLv3 | vCPU (Cloud) |
Estuary Flow | Log, per connector | Postgres, MySQL, SQL Server, Oracle, MongoDB | SaaS, private, BYOC | BSL 1.1 | GB plus connector |
Fivetran | pgoutput or xmin | Postgres, MySQL, SQL Server, Oracle, MongoDB | SaaS, hybrid | Proprietary | Monthly active rows |
Airbyte | Debezium embedded | Postgres, MySQL, SQL Server, MongoDB | Self-hosted Core, Cloud | ELv2 platform, MIT connectors | Credits per GB |
AWS DMS | Native log APIs | Oracle, SQL Server, MySQL, Postgres, MongoDB | AWS instance or serverless | Proprietary | Instance hour |
Striim | Log-based | Oracle, SQL Server, MySQL, Postgres, MongoDB | Cloud or self-hosted | Proprietary | Data moved, quote |
Qlik Replicate | Log-based | Oracle, SQL Server, Db2, MySQL, Postgres, Sybase | Self-managed or Qlik Cloud | Proprietary | Quote |
What is change data capture and how does it work?
Change data capture is the practice of recording every insert, update, and delete a database commits and delivering that record somewhere else, in order. The SQL Server docs define it as a feature that "records activity on a database when tables and rows have been modified."
Log-based capture reads the database's own journal, so it sees every change and barely touches production. Postgres exposes that journal through logical replication. It needs wal_level=logical, a publication, a replication slot, and the built-in pgoutput plugin. MySQL exposes the binary log in row format. Oracle reads redo through LogMiner and MongoDB offers change streams.
The alternatives are weaker. Trigger-based capture writes a shadow row on every change and taxes every transaction. Query-based capture polls a timestamp or a column such as Postgres xmin, which Fivetran's docs say "may scan full tables", and it misses deletes without a separate delete scan. This list ranks only tools that read the log.
How should you choose a CDC tool?
Five criteria separate these tools, and source coverage comes first because a tool that cannot read your database is not a candidate. The other four decide how much it hurts to run. On recovery, Debezium's docs set the ceiling for the whole category, "exactly once" normally and "at least once" after a fault.
Criterion | What to check | Why it matters |
|---|---|---|
Source coverage | Which logs it reads | Oracle and SQL Server narrow the field fast |
Snapshot consistency | One point for baseline and stream | Otherwise duplicates or gaps after the copy |
Recovery | Checkpoints, resume, delivery guarantee | Every tool is at-least-once after a fault |
Footprint | Containers, Kafka, JVM, staging | Each moving part is a page at 3 a.m. |
Cost model | Rows, GB, credits, vCPU, or none | Per-row meters grow with your success |
The best CDC tools in 2026, ranked
The ranking is for the most common reader of this page. That is a team that reads Postgres or MySQL, lands changes in Postgres, a warehouse, or a lake, and would rather run the tool than rent it. A team on Oracle or SQL Server should start at entries two, four, seven, and nine.
1. Filament. A Go replication engine that runs as one binary, a Go library, or a Helm chart, reading Postgres through pgoutput and MySQL through the binlog. Per the Postgres source docs, each table is read through the slot's exported snapshot, "so the baseline and the change stream share one consistent point." No meter, no Kafka. The limit is coverage, with no SQL Server, Oracle, or MongoDB source yet.
2. Debezium. The reference open source CDC engine, with the widest source list here, Postgres, MySQL, SQL Server, Oracle, MongoDB, and Db2, per the 3.6 connector list. Its strength is fan-out, since Kafka "allows many clients to independently consume these same data change events", per the README. The cost is the stack. The architecture page says you "most commonly" deploy it through Kafka Connect.
3. PeerDB. A Postgres-first engine that ClickHouse acquired in July 2024 and now ships as the ClickPipes Postgres connector. Its best trick is TOAST caching, which the docs say "eliminates the need of setting REPLICA IDENTITY FULL." The limits are targets and weight. Only ClickHouse and Postgres destinations are actively maintained, the architecture needs Temporal plus a catalog Postgres, and the LICENSE file is AGPLv3.
4. Estuary Flow. A managed streaming platform with log-based capture for Postgres, MySQL, SQL Server, Oracle, and MongoDB. Its claim is delivery. The materialization docs promise "end-to-end 'exactly once' semantics" when the endpoint is transactional. The tradeoffs are location and price. Pricing is $0.50 per GB plus $100 per connector each month, private deployment needs an annual contract, and the source license is BSL 1.1 until 2029.
5. Fivetran. The widest managed catalog, with "700+ fully managed connectors" per its pricing page, and real logical replication through pgoutput on Postgres. The concerns are the meter and the fallback. Fivetran bills by monthly active rows, so the invoice tracks your volume. Its query-based mode reads xmin and, per the connector docs, "does not preserve details about deleted rows." One-minute syncs are Enterprise only.
6. Airbyte. Airbyte embeds Debezium inside its Postgres, MySQL, SQL Server, and MongoDB sources and adds the largest open connector catalog with a free self-hosted Core. Its CDC docs say "we do not treat CDC sources as infinite streaming sources", so it drains the log on a schedule.
Destinations land a raw table plus a final table, a layout now being phased out. The platform LICENSE is ELv2, connectors are MIT, and Cloud bills 4 credits per GB.
7. AWS DMS. Database Migration Service captures changes from Oracle, SQL Server, MySQL, Postgres, and MongoDB with each engine's native log API, per the CDC task docs. It is the easy answer for an all-AWS shop that needs Oracle. The same page says it "does not provide real-time replication" and has "no SLAs for CDC latency." Pricing is by instance hour or serverless capacity, inside AWS only.
8. Striim. A streaming-native, log-based platform with Oracle, SQL Server, MySQL, Postgres, and MongoDB readers, per its connector list, aimed at the enterprise buyer that also wants in-flight transforms. The pricing page offers a free developer tier up to 25 million events a month, then Cloud priced on "the data you move" and a self-hosted Platform, both on quote.
9. Qlik Replicate. The former Attunity Replicate, acquired in 2019, and still the log-based workhorse where Oracle, Db2, and Sybase sit beside SQL Server, MySQL, and Postgres, per its product page. Its strength is legacy reach. Pricing is quote only and the software is proprietary.
Seven more tools read the log but serve one database, one destination, or one cloud.
Tool | Reads | Writes | License or pricing | Why not ranked |
|---|---|---|---|---|
OLake | Postgres, MySQL, MongoDB, SQL Server | Iceberg, Parquet only | Apache 2.0 | Lake targets only |
Google Datastream | MySQL, Oracle, Postgres | BigQuery, GCS | $2.00 per GiB to 2,500 GiB | Google Cloud only |
Oracle GoldenGate | Oracle plus others | Broad | OCPU per hour, BYOL | Oracle shop economics |
Maxwell | MySQL only | Kafka, Kinesis | Apache 2.0 | One source |
Sling | Postgres, MySQL, SQL Server, Oracle, MongoDB | Relational targets | GPLv3, CDC needs Pro Max | Paywalled CDC |
dlt pg_replication | Postgres only | dlt destinations | Apache 2.0 | One source, no scd2 |
ingestr | Postgres, MySQL, SQL Server, MongoDB | Many | FSL 1.1 | Catch-up runs by default |
How we ranked these CDC tools
Each entry was scored on the five criteria using its own documentation, its LICENSE file rather than a README badge, and its public pricing page, all fetched on September 24, 2026. Where a tool ran in the 2026-08-31 cohort, a full load of 298,270,427 taxi rows from Postgres to Postgres, its result is reported. No tool gets a speed claim on a route without a public run.
Tool | Wall time (s) | Rows per second | Peak memory | What the run measured |
|---|---|---|---|---|
Filament | 115 | 2,597,498 | 2.97 GiB | Full load, 32 shards |
PeerDB | 415 | 718,368 | 0.74 GiB, largest of 7 containers | Initial copy only |
Debezium | 6,559 | 45,476 | 15.70 GiB | Initial snapshot, not steady-state streaming |
Airbyte | 10,393 | 28,698 | 12.82 GiB | Full refresh, standard method |
The Debezium row is its initial snapshot with a JDBC sink, not the steady-state streaming it is built for. The benchmark overview says the cohort "does not currently measure incremental catch-up, steady-state CDC throughput, or recovery after failure." Read the table as the baseline copy every CDC pipeline starts with.
Where Filament fits against these criteria
Filament clears four of the five criteria for a Postgres or MySQL team and misses the first for everyone else. Galaxy builds Filament, so weigh this section accordingly. Both sources are beta, per the connector overview, meaning they run end to end but are not yet verified for every environment.
On consistency, the Postgres source copies through the slot's exported snapshot, and the MySQL source takes a brief read lock so the binlog position and the snapshot agree. On recovery, the runs docs state that "CDC saves its stream position only after a successful commit", and the Postgres sink makes cdc_merge idempotent on the primary key.
On footprint, the local CLI uses SQLite and an in-process bus, and production is one Helm chart with Postgres and NATS JetStream, no Kafka. On cost, there is no meter and the LICENSE is Apache 2.0. Every batch also carries a CRC32-C checksum verified on both sides of the write, per the integrity docs.
On the baseline copy, Filament loaded the cohort in 115 s, the fastest wall time of the seven tools measured, splitting large tables into up to 64 parallel ranges.
How to run CDC with Filament
Three prerequisites on the source, then one pipeline definition. Set wal_level=logical (a restart, per the Postgres docs), grant the connector user REPLICATION, and give every selected table a primary key, since CDC rejects keyless tables.
The pipeline below adapts the documented CLI example to CDC. Each key is documented on its connector page.
The first run creates a publication named filament, opens a slot with an exported snapshot, and copies both tables through it. Every later run is a bounded catch-up cycle from the oldest resource LSN to pg_current_wal_lsn(), so continuous CDC is a loop you can put on a cron. Verify with a row count on each side, then watch confirmed_flush_lsn in pg_replication_slots advance.
What are the common pitfalls with CDC tools?
Four failures show up with every tool on this list.
Replication slots retain WAL until acknowledged, so a stopped consumer fills disk. The Postgres docs point to
max_slot_wal_keep_size.DDL does not travel through logical decoding. The restrictions page says "DDL commands are not replicated."
Updates that leave a TOAST column untouched arrive without its value unless the table has
REPLICA IDENTITY FULLor the tool caches it.Tables without a primary key cannot be merged, and most tools reject them for CDC outright.
Which CDC tool fits which job?
Pick by the constraint that breaks first.
Constraint | Pick | Why |
|---|---|---|
Postgres or MySQL, run it yourself | Filament | Consistent bootstrap, checksums, one binary, no meter |
Many consumers share one feed | Debezium | Ordered Kafka topics, widest source list |
Target is ClickHouse | PeerDB | Native ClickPipes path, TOAST caching |
Oracle or SQL Server, all AWS | AWS DMS | Native log APIs, hourly instance |
Oracle, Db2, or mainframe sources | Qlik Replicate | Legacy source breadth |
No engineers to run software | Fivetran | Managed, 700 plus connectors |
Exactly-once into a transactional sink | Estuary Flow | Integrated transactions |
Lakehouse tables from a database | OLake | Iceberg writer, Apache 2.0 |
For the main reader, a Postgres or MySQL team that keeps data in its own network, Filament is the pick because it meets the consistency, recovery, footprint, and cost criteria with documented behavior. For Oracle, SQL Server, or a shared change bus, take Debezium, DMS, or Qlik.
Related guides
Frequently asked questions
What is a CDC tool?
A CDC tool reads a database's transaction log and turns every committed insert, update, and delete into an ordered stream of change events, then applies or publishes them somewhere else. Log-based tools tail the write-ahead log or binlog. Query-based tools poll a timestamp or transaction id and cannot see hard deletes.
What are the best open source CDC tools?
Debezium (Apache 2.0) is the most widely deployed and covers the most databases. Filament (Apache 2.0) is a single Go binary for Postgres and MySQL. PeerDB (AGPLv3) is Postgres-first and maintained by ClickHouse. OLake (Apache 2.0) writes Iceberg, and Maxwell (Apache 2.0) sends MySQL binlogs to Kafka or Kinesis.
Does CDC require Kafka?
No. Debezium's main topology runs on Kafka Connect, but Debezium Server, PeerDB, Estuary, Fivetran, Airbyte, and AWS DMS all stream changes without a Kafka cluster. Kafka earns its place when many independent consumers need the same ordered change feed, not when one warehouse needs a current copy of a table.
What is the difference between log-based and query-based CDC?
Log-based CDC reads the database's own transaction log, so it sees every change including deletes and adds almost no load to production tables. Query-based CDC polls tables on a timestamp or a system column such as Postgres xmin, which can scan whole tables and misses hard deletes unless the tool adds a separate delete scan.
Which CDC tool is best for PostgreSQL?
For a team that runs its own software and moves Postgres into Postgres, a warehouse, or a lake, Filament fits the criteria here most closely as of September 2026. It has checkpointed pgoutput streaming, a consistent snapshot bootstrap, and the fastest full load in the public cohort. Debezium fits a shared Kafka feed, and PeerDB fits a ClickHouse target.
Can CDC tools handle schema changes automatically?
Partly. Postgres logical decoding does not carry DDL, so no tool sees an ALTER TABLE in the stream itself, and Airbyte's docs note that changes made by ALTER do not appear in the logs. Most tools add new columns at the destination and leave type changes and dropped columns alone. Plan for add-only evolution and a re-sync when a type changes.
Why do replication slots fill up disk?
A Postgres replication slot holds WAL until the consumer acknowledges it. If the CDC tool stops or falls behind, the server keeps every segment and pg_wal grows without limit unless max_slot_wal_keep_size is set. Set that parameter, monitor slot lag, and use a tool that acknowledges its position on a fixed interval.
How do you run CDC from Postgres with Filament?
Set wal_level to logical, give the connector a user with the REPLICATION privilege, and point a pipeline at the tables with replication set to cdc and write mode set to merge. Filament creates the publication and slot, copies each table through the slot's exported snapshot, then streams changes in bounded catch-up cycles from the last committed position.
More articles
Questions
Answered
FAQ
What does Galaxy do?
What is Filament?
What is enterprise context management?
What does working with Galaxy look like?
How do you handle security and compliance?
Why does Galaxy build in the open?
Company
Talk to the team
Copyright © 2026 Galaxy. All rights reserved.
