Skip to main content

Best Change Data Capture Tools in 2026, Compared

40 min read

Cover for best change data capture tools showing databases flowing through a CDC tool to a lake or warehouse

Key takeaways

Short version: there is no single best change data capture (CDC) tool, because these tools do different jobs. Debezium and Flink CDC suit teams that already run their own streaming systems.

Fivetran, Estuary, Airbyte and Artie suit teams that would rather have a vendor run the pipeline. Striim, Qlik Replicate and GoldenGate fit big Oracle estates, and AWS Database Migration Service (DMS) and Datastream fit teams that live on one cloud. Where your data has to land, say Apache Iceberg tables, cuts the list down fast.

  • CDC is not one thing. Log-based tools read the database's change log. Query-based tools just ask, on a schedule, what changed, and that matters most for deletes and source load.
  • Where the data lands decides your shortlist. Only some tools write Apache Iceberg, and AWS DMS, for one, has no Iceberg target.

We checked prices in September and October 2026 against vendor pages.

Log-based or query-based? Start here​

Change data capture sends only a database's inserts, updates and deletes to another system, instead of copying everything again.

Confluent describes log-based CDC as reading the database's transaction log, the file where the database writes down every change in order. Query-based CDC, also called timestamp-based, works differently. It runs a query on a schedule, and it needs a column that records when each row changed.

Here's the catch with timestamp-based CDC. Confluent says it can only handle soft deletes (rows marked as deleted, not removed), and it adds load because rows must be scanned. Log-based CDC isn't free either, since the Debezium FAQ says running a connector can add load to the source database.

Log-based CDC reads the change log and sees deletes; query-based CDC polls on a schedule and can miss them

Confluent also lists trigger-based CDC, where a database trigger (a stored procedure that runs on every insert, update or delete) copies each change into a shadow table. It catches deletes, but Confluent says it hurts source performance and changes the source schema.

MethodSees deletesSource loadNeeds
Log-basedYesLow, though not zeroAccess to the transaction log
Query-based (timestamp)Soft deletes onlyRows are scanned on each runA reliable changed-at column
Trigger-basedYesExtra writes on every changeTriggers and a shadow table in the source

Method facts: Confluent's change data capture guide and the Debezium FAQ, October 2026.

How we picked​

We included maintained tools that read changes from at least one database and publish documentation we could open. We took the facts from the vendor's own pages and did not run these tools. This is a reading of documents, not a lab test, so any speed, uptime or ease claim below is the vendor's own.

Where we found a named, dated user comment we could link, the entry has a "What users say" line, quoted word for word. Those are single opinions, and we flag any that are old.

We left out the broad extract, transform, load (ETL) suites where CDC is just one feature among many (Hevo, Matillion, Skyvia and Integrate.io). We grouped the tools by how you run them, and the order inside a group is not a ranking.

The 12 tools at a glance​

ToolCDC methodDatabasesHow you run itLicence
DebeziumLog-based8 connectors not marked incubating, including MySQL, PostgreSQL, Oracle, MongoDBSelf-hostedApache 2.0
Flink CDCLog-basedMySQL, PostgreSQL, Oracle in YAML pipelines; more as Flink sourcesSelf-hosted on FlinkApache 2.0
OLake GoLog-based, four sourcesPostgreSQL, MySQL, MongoDB, SQL ServerSelf-hosted on your own infrastructureApache 2.0
EstuaryLog-basedPostgreSQL, MySQL, MongoDB, Oracle, SQL ServerManaged, private or your own cloudBusiness Source License 1.1
AirbyteLog-based, scheduled syncsPostgreSQL, MySQL, MongoDB, SQL Server (Oracle, SAP HANA and Db2 are listed on its CDC page)Core self-managed, or CloudElastic License 2.0
FivetranNative logs plus proprietary methodsMySQL, PostgreSQL, SQL Server, MongoDB, OracleManaged, or HybridProprietary
ArtieLog-basedPostgreSQL, MySQL, MongoDB, Oracle, SQL ServerManaged, or your own cloud on EnterpriseProprietary
StriimLog-basedOracle, PostgreSQL, SQL Server, MySQLCloud, or self-managedProprietary
Qlik ReplicateLog-basedOracle and other databases, plus mainframe sourcesClient-managed, or Talend CloudProprietary
Oracle GoldenGateLog-basedOracle, MySQL, PostgreSQL, SQL Server, Db2Self-managed, or Oracle's serviceProprietary
AWS DMSLog-basedOracle, SQL Server, MySQL, PostgreSQL, MongoDBAWS managedProprietary
Google DatastreamPer source, such as the MySQL binary logMySQL, Oracle, SQL Server, PostgreSQL, MongoDBGoogle Cloud serviceProprietary
ToolLands data in (Iceberg only where the docs say so)Pricing basis
DebeziumKafka topics; Debezium Server sinks include Iceberg (community-maintained)Free licence, you pay for infrastructure
Flink CDCPipeline sinks include Iceberg, Paimon, Hudi, KafkaFree licence, you pay for the Flink cluster
OLake GoApache Iceberg and ParquetFree licence, you pay for infrastructure
EstuaryWarehouses and lakehouses; Iceberg on S3 only$0.50 per GB moved plus connector instances
AirbyteWarehouses and lakes; Iceberg on S3Core free; Cloud Standard from $20 a month
FivetranWarehouses; Iceberg through Managed Data Lake ServiceMonthly Active Rows per connection
ArtieWarehouses and lakes; Iceberg listed under EnterpriseFree to 1M rows; Growth from $500 a month
StriimIceberg on Google Cloud Storage or Amazon S3 TablesContact us (Developer tier is free)
Qlik ReplicateIceberg through Qlik Open LakehouseNot published on Qlik's pages
Oracle GoldenGateIceberg handler in the DAA guide; OCI GoldenGate also lists IcebergPer processor or user; managed per compute minute
AWS DMSS3 files; no Iceberg targetInstance or DCU hours
Google DatastreamBigQuery, Cloud Storage, Iceberg tables (append-only)Per GiB processed

Sources: Estuary, Airbyte, Artie, Striim, Qlik, Oracle price list, AWS DMS price list, Datastream pricing pages. Checked October 2026.

The 12 best change data capture tools, one by one​

Run it yourself​

1. Debezium: best for teams that already run Kafka​

Debezium home page showing its headline and main navigation

Debezium home page, October 2026.

At a glance

  • Method: Log-based
  • Databases: MongoDB, MariaDB, MySQL, PostgreSQL, SQL Server, Oracle, Db2, Cassandra (connector list)
  • Price: Free licence, you pay for infrastructure and staff

Debezium is an open-source tool for log-based CDC. It runs inside Kafka Connect, or as Debezium Server, which the docs say needs no Apache Kafka.

What's good

  • Eight database connectors aren't marked incubating, and Oracle is one of them.
  • Its docs describe Debezium Server as a ready-to-use application that streams change events to messaging and storage systems without requiring Apache Kafka. The sink list includes Kinesis, Pub/Sub, Pulsar, Redis, RabbitMQ and Event Hubs besides Iceberg.
  • Per the same docs, the Iceberg sink supports upsert and append modes, creates the destination tables on first startup when event and key schema information is enabled, and adds new columns when allow-field-addition is on (the default is true).
  • The Debezium FAQ says all events within a topic are totally ordered, and that even if events are duplicated during failures, the end result after applying all of them stays the same.
  • The PostgreSQL docs say that if the connector stops for any reason, it continues reading the WAL where it last left off after a restart.

Where it falls short

  • You run it, all of it. The Apache Iceberg sink lives in a separate community repository, and each Debezium Server instance runs one connector.
  • In the Iceberg sink, upsert is off by default, so the default is append-only. With upsert on, upsert-keep-deletes defaults to true, so deleted rows are kept and marked __deleted=true (Debezium Server docs).
  • Upsert keeps the record with the highest value in a dedup column (__source_ts_ns by default). The Debezium Server docs do not say what happens when two records share the same value.
  • The PostgreSQL pgoutput plug-in does not capture values for generated columns, so those columns are missing from the connector's output (PostgreSQL docs).
  • Delivery is at least once: in abnormal situations, such as recovering from a fault, the PostgreSQL connector might emit duplicate change events (same docs).

What users say: A commenter in the 2021 thread "Postgres, Kafka, and a mysterious 100 GB" said Debezium "requires a lot of babysitting."

Apache Flink CDC home page showing its headline and main navigation

Apache Flink CDC home page, October 2026.

At a glance

  • Method: Log-based, with Debezium as the engine for some sources
  • Price: Free licence, you pay for the Flink cluster

With Flink CDC you write a pipeline in YAML, and it generates and submits the Flink job for you. In version 3.6.x the YAML sources are MySQL, PostgreSQL and Oracle. SQL Server, MongoDB and Db2 are listed only under its separate Flink sources.

What's good

  • The Iceberg pipeline sink creates tables and syncs schema changes such as new columns, with catalogs of type hadoop, hive, glue or a custom class.
  • Its connector overview lists ten pipeline sinks for version 3.6.x: StarRocks, Doris, Paimon, Kafka, Elasticsearch, OceanBase, MaxCompute, Iceberg, Fluss and Hudi. The same YAML pipeline format covers all of them.
  • The overview lists Iceberg versions 1.6, 1.7, 1.8, 1.9 and 1.10 for the Iceberg sink.
  • The sink's partition.key option takes partition transforms per table: truncate, hour, day, month, year and bucket (Iceberg sink docs).
  • Per the same page, the sink supports both batch and streaming data synchronization.

Where it falls short

  • The Iceberg sink needs a primary key (a column that uniquely identifies each row) on every source table, and its docs say exactly-once is not supported. It uses at-least-once writes plus the key.
  • Depending on the catalog type, the sink docs say you may need to add extra JARs by hand and pass them with the --jar argument of the Flink CDC command line.
  • Each Flink CDC release pairs with specific Flink versions. Version 3.6.x supports Flink 1.20.* and 2.2., and 3.5.x supports 1.19. and 1.20.* (overview).
  • The version table shows YAML sources arriving over time: PostgreSQL first appears in the 3.5.x row and Oracle in the 3.6.x row, and the Iceberg sink first appears in the 3.4.x row.

3. OLake Go: best for database changes into Iceberg on your own storage​

OLake

OLake home page showing its headline and main navigation

OLake home page, October 2026.

At a glance

  • Method: Log-based CDC for four databases
  • Price: Free licence (Apache 2.0), you pay for infrastructure

You run it with Docker Compose (OLake UI install), the Docker command line (Docker CLI) or Helm on Kubernetes (Kubernetes install).

It reads PostgreSQL logical replication, the MySQL binlog, MongoDB change streams and SQL Server's native CDC, and writes Apache Iceberg tables. Deleted rows are marked with equality deletes (a delete by key value) or positional deletes (a delete by file position), both Iceberg version 2 delete formats. Since v0.11.0 it can also use deletion vectors, an Iceberg version 3 delete format (see the terminology page).

Docs: PostgreSQL, MySQL, MongoDB, SQL Server.

What's good

  • It is open source under Apache 2.0 (GitHub), and one tool does the first snapshot and then the change capture, with no per-row fee.
  • It supports eleven Iceberg catalog types (compatibility page), including Glue, Hive, Unity and Representational State Transfer (REST) catalogs (REST catalog page).
  • Kafka and S3 work as sources too (connector overview), and OLake Fusion, a companion product, handles Iceberg compaction and table maintenance (Fusion docs).
  • Full Refresh + CDC, Full Refresh + Incremental and strict CDC syncs are stateful and resumable: after a crash, a network failure or a manual pause, a sync resumes from its last checkpoint instead of starting over. The Iceberg writer also uses a two-phase commit that tracks per-chunk commit status, so syncs avoid inconsistencies and duplicate writes (OLake Go overview).
  • Large tables are read in parallel chunks during the first snapshot, and each job sets its own maximum number of connections to the source database (OLake Go overview).
  • New source columns are added to the Iceberg schema automatically, and widening type changes such as INT to LONG, FLOAT to DOUBLE and wider DECIMAL precision are handled (schema evolution docs).

Good to know

  • Change capture covers PostgreSQL, MySQL, MongoDB and SQL Server, and Oracle, Db2 and S3 sources load by full refresh or incremental.
  • Output is Iceberg and Parquet on storage you choose, and Snowflake, BigQuery and Redshift can query the Iceberg tables it writes (see the compatibility page).

Bottom line: Pick OLake Go when you run PostgreSQL, MySQL, MongoDB or SQL Server and want database changes in Iceberg tables on storage you run. For Oracle change capture, look at Debezium, Qlik Replicate or Oracle GoldenGate above.

Managed or vendor-run​

4. Estuary: best for one managed platform for streaming and batch​

Estuary Flow home page showing its headline and main navigation

Estuary Flow home page, October 2026.

At a glance

  • Method: Log-based
  • Price: $0.50 per GB moved, plus $100 a month for each of the first 6 connector instances and $50 for extra ones; free tier of 10 GB a month and 2 instances (Estuary pricing page, October 2026)

Its pricing page lists PostgreSQL, MySQL, MongoDB, Oracle and SQL Server among the major databases it supports.

What's good

  • Its pricing page says it unifies real-time streaming and batch movement in one system.
  • The pricing FAQ says Estuary offers "200+ source and destination connectors" across databases, cloud storage, APIs, SaaS apps and streaming platforms (pricing page).
  • Per the same FAQ, a new pipeline runs a historical backfill and then switches to real-time CDC, and the backfill can be disabled or scoped.
  • Adding a new target means paying only for that target and the data sent to it, with no need to re-extract from each source (pricing FAQ).
  • Its Iceberg connector docs say AWS Glue catalogs work through the Glue Iceberg REST endpoint, and that with Glue you can configure table optimizers for compaction, snapshot retention and orphan file deletion.

Where it falls short

  • The Iceberg connector needs an Iceberg REST catalog (a catalog with a standard web API) on Amazon S3, an AWS EMR Serverless Spark application and an S3 staging bucket (a holding folder for files in transit). Catalogs on GCP or Azure are planned, not supported.
  • Each source and destination is a billed instance (pricing), so the bill grows as your pipelines do.
  • In the Iceberg connector docs, array and object fields are written as string columns, and the docs say nested types are not currently supported.
  • Compaction through the Glue optimizer settings is off by default (Enable Compaction defaults to false), and Hard Delete is disabled by default, so rows deleted in the source are soft-deleted in Iceberg.
  • A "Beta" label sits in the docs section on REST catalogs other than AWS Glue.
  • Private and bring-your-own-cloud deployments need an annual plan and add fees based on the cloud infrastructure required, and no figure is published (pricing docs).

Estuary pricing page with Developer, Cloud and Enterprise plans, the per gigabyte price and the per connector fee

Estuary pricing page, October 2026.

5. Airbyte: best for scheduled syncs and a long connector list​

Airbyte home page showing its headline and main navigation

Airbyte home page, October 2026.

At a glance

  • Method: Log-based CDC on scheduled syncs
  • Price: Core free; Cloud Standard $20 a month with 5 credits and $5 per extra credit, with database data at 4 credits per GB (Airbyte pricing page and credit docs, October 2026)

Airbyte's CDC docs say syncs are scheduled, and CDC sources aren't treated as infinite streaming sources. So don't expect a live stream. Cloud Standard syncs at most hourly, and Plus syncs every 15 minutes (Cloud limits).

What's good

  • Its pricing page lists 700+ connectors, and the S3 Iceberg destination supports REST, Glue, Nessie and Polaris catalogs.
  • The S3 Iceberg destination offers Full Refresh Overwrite, Append and Overwrite + Deduped, plus Incremental Append and Append + Deduped. Its docs say dedup is merge-on-read: primary keys become Iceberg identifier columns, and an upsert is an equality delete on the key followed by an insert.
  • The pricing page's comparison matrix lists a maximum sync frequency of 5 minutes on Pro and Enterprise Flex, against 15 minutes on Plus and 1 hour on Standard.
  • Its licence FAQ says anyone can use Airbyte free of charge and run it at scale on their own infrastructure, under the Elastic License 2.0.
  • On Cloud, the credit docs say that if you run out of credits, syncs continue and you are billed in arrears. A trial lasts 14 days or 400 trial credits, whichever comes first.

Where it falls short

  • The CDC docs list some limits. Views aren't supported, TRUNCATE and ALTER changes aren't picked up from the logs, and new tables need a refresh.
  • Per the same page, CDC incremental is supported only for tables with primary keys for most sources, and the first CDC sync takes a snapshot with a SELECT statement, which the docs call effectively a Full Refresh.
  • In the S3 Iceberg destination, objects and unions are written as string columns of serialized JSON (destination docs).
  • Two cautions in the same docs: if compaction runs at the same time as a truncate refresh sync, it deletes files from the current generation and causes data loss, and changes made to the main branch outside Airbyte after a sync begins are lost.
  • The Cloud limits page caps Standard organizations at 1 workspace and a connection at 1,000 streams. Plus has SSO but no SCIM or role-based access control.
  • Pro and Enterprise Flex use capacity-based pricing, and the pricing page publishes no price for them.

Airbyte documentation page describing change data capture as log-based incremental replication

Airbyte's change data capture documentation, October 2026.

6. Fivetran: best for hands-off, vendor-run replication​

Fivetran home page showing its headline and main navigation

Fivetran home page, October 2026.

At a glance

Fivetran counts Monthly Active Rows (MAR), meaning the rows changed in a month, per connection.

Its database connectors use each source's own CDC feature (MySQL and MariaDB binlog, SQL Server CDC and Change Tracking, MongoDB change streams, PostgreSQL logical replication) or a proprietary method (database connector docs). Its proprietary Teleport Sync can force a full table re-sync if large parts of a table change.

What's good

  • It runs the pipeline for you, with hundreds of connectors.
  • Managed Data Lake Service writes Iceberg to S3, Azure Data Lake Storage and Google Cloud Storage, and Fivetran says it handles the table maintenance (we did not test that).
  • Per its database connector docs, database connectors sync new and modified data every 15 minutes by default, apply changes to the destination in batches with a merge (upsert and insert), and most initial syncs finish within a day.
  • For the Iceberg service, Fivetran says snapshots older than the retention period are deleted once a day (the last 2 snapshots are always kept), and orphan files are moved to an orphans folder on the second and fourth Saturdays of each month (docs). We did not test this.
  • A row is counted once per month even if it syncs several times, and a row deleted twice in a month is counted once (pricing update).

Where it falls short

  • The Iceberg service does not support position deletes (docs), and deleted rows count as paid MAR from January 2026 (pricing update).
  • The billing docs set a $5 minimum charge per connection on monthly pay-as-you-go (for usage between 1 and 1 million MAR) and a $12,000 minimum on annual contracts.
  • Per the same page, Oracle, Oracle RAC, Oracle RDS, SAP ERP on HANA and Db2 for LUW (Beta) database sources can be synced only on the Enterprise or Business Critical plans.
  • Expired change logs require a full source re-sync, and schema changes in the source are the most common trigger of a full table re-sync (database connector docs).
  • On AWS, the Iceberg service does not support the S3 Glacier Flexible Retrieval, Glacier Deep Archive and Intelligent-Tiering archive tiers, and AWS Glue Catalog supports only one table per schema and table name combination in a Region (docs).
  • Iceberg does not allow columns named _deleted, _file, _partition, _pos, _spec_id, file_path, pos or row, so Fivetran prefixes such names with a hash symbol (#) (same docs).

What users say: In a Hacker News thread about Fivetran and dbt Labs agreeing to merge (October 2025), one commenter wrote "Fivetran is convenient but absurdly expensive."

7. Artie: best for managed CDC with a published monthly plan​

Artie home page showing its headline and main navigation

Artie home page, October 2026.

At a glance

  • Method: Log-based
  • Price: Free to 1M rows a month and 2 pipelines; Growth from $500 a month billed annually; Enterprise custom (Artie pricing, October 2026)

Iceberg arrived through S3 Tables in June 2025 and through REST (a standard web API) catalogs in March 2026, per its changelog.

What's good

  • You get a free plan, a published Growth price, and sources such as PostgreSQL, MySQL, MongoDB, Oracle and SQL Server (pricing page).
  • Growth is $500 a month billed annually or $600 a month month-to-month, and it is usage-based on the billable rows processed after the initial backfill (pricing page).
  • Its changelog says Iceberg REST catalogs, naming Databricks Unity Catalog, Snowflake Polaris and Dremio, arrived in March 2026, and that Iceberg destinations can be set up through its Terraform provider (February 2026).
  • The same changelog lists September 2026 additions: Oracle changes from an Active Data Guard physical standby that is open read-only, and PostgreSQL 17 failover replication slots for new CDC pipelines.
  • A July 2026 changelog entry says MongoDB pipelines can opt into collection-scoped change streams, and that database-wide change streams apply the configured filters before Artie decodes events.

Where it falls short

  • Here's the catch. The pricing page lists Iceberg, and Oracle and SQL Server log replication, only under Enterprise.
  • PrivateLink costs $500 a month per connection on Growth and is not offered on Free, and an uptime SLA is listed only for Enterprise (pricing page).
  • Running in your own cloud (bring your own cloud) is listed as Enterprise only, and Enterprise pricing is custom (pricing page).
  • Artie does not publish a product licence on the pages we checked, including its pricing page.
  • The changelog shows the S3 Tables Iceberg destination in beta in May 2025, with the full launch in June 2025.

Artie pricing page showing the Free plan, the Growth plan from $500 a month and the custom Enterprise plan

Artie pricing page, October 2026.

Enterprise platforms​

8. Striim: best for Oracle-heavy streaming​

Striim home page showing its headline and main navigation

Striim home page, October 2026.

At a glance

  • Method: Log-based
  • Price: Developer tier free up to 25 million events a month; Cloud and Platform say "contact us" (Striim pricing page, October 2026)

For Oracle, Striim gives you two readers, one using LogMiner and one called OJet. Both read Oracle 11g and higher, including Oracle clusters (Oracle CDC docs).

What's good

  • Its docs describe two Oracle readers, and its Iceberg Writer has write modes of merge and append-only with schema evolution.
  • The Oracle CDC docs position the LogMiner-based Oracle Reader for 20 GB to 80 GB of CDC data per hour and OJet for high-volume cases of 150+ GB per hour. Both are listed as supporting Oracle 26ai.
  • Per the same page, its GG Trail Reader can read existing Oracle GoldenGate trail files.
  • The S3 Tables writer supports APPENDONLY and MERGE modes, with an Optimized Merge option for partial-image CDC, and works with either the catalog built into S3 Tables or AWS Glue.

Where it falls short

  • The Iceberg Writer says the only supported data lake in this release is Google Cloud Storage. It also needs a Spark compute service and a catalog, and you must create partitioned tables by hand. That said, Striim also documents a separate S3 Tables writer.
  • The Iceberg Writer needs Google Cloud Managed Service for Apache Spark (formerly Dataproc) and a Lakehouse, Nessie or Polaris catalog. A Hadoop catalog on GCS is supported but recommended only for development and testing.
  • The Iceberg Writer writes time data types as strings, and it recovers with at-least-once processing.
  • The S3 Tables writer uses Amazon EMR as its compute engine, and S3 Tables requires lowercase table, namespace and column names, which breaks wildcard mappings against sources with uppercase identifiers.

Striim Iceberg Writer documentation stating that Google Cloud Storage is the only supported data lake in this release

Striim Iceberg Writer documentation, October 2026.

9. Qlik Replicate: best for older enterprise and mainframe sources​

Qlik Replicate / Qlik Talend Cloud home page showing its headline and main navigation

Qlik Replicate / Qlik Talend Cloud home page, October 2026.

At a glance

  • Method: Log-based
  • Price: Capacity bands by data volume and job runs, no list prices (Qlik pricing page, October 2026)

On Talend Cloud, log-based CDC starts at the Standard edition and the Starter edition has none. Mainframe sources appear in the Enterprise edition (Qlik pricing page).

What's good

  • Mainframe sources, listed in its Enterprise edition.
  • Qlik's pricing page lists Open Lakehouse, with ingestion and adaptive optimization for Apache Iceberg, in its Standard edition. We did not test it.
  • The pricing page lists cloud, client-managed or hybrid deployment under the Standard edition, and the Premium edition adds ELT or ETL transformations.
  • For Oracle, the Replicate docs describe reading redo logs with either Oracle LogMiner or Replicate Log Reader, with a separate limitations list for each.
  • Qlik says usage is measured on data volume moved, number of job executions and execution duration, and customers can watch it on a self-serve telemetry dashboard (pricing page).

Where it falls short

  • Prices aren't published on Qlik's own pages: each of the four editions shows a Contact Us button and no dollar figure.
  • Iceberg comes mainly from the separate Open Lakehouse feature.
  • For Oracle 21c, the docs say LogMiner is not supported, immutable tables and blockchain tables are not supported, and CDC is not supported if a schema, table or column name is longer than 30 characters (Oracle source limits).
  • Capturing changes from a pluggable database (PDB) with LogMiner is not supported, capturing from several PDBs through the container database is not supported, and the docs advise against LogMiner on a RAC environment because of unpredictable behavior (same page).

10. Oracle GoldenGate: best for Oracle-to-Oracle and low-downtime moves​

Oracle GoldenGate home page showing its headline and main navigation

Oracle GoldenGate home page, October 2026.

At a glance

  • Method: Log-based
  • Price: Per processor or Named User Plus on premises (Oracle price list); OCI GoldenGate bills per OCPU (Oracle's compute unit) per minute (OCI billing docs, October 2026)

Oracle's FAQ says the Extract process captures changes from the source redo or transaction logs and writes them to a trail file. GoldenGate 26ai supports Oracle Database 19c to 26ai and later.

What's good

  • It lists "hundreds of sources and targets", including MySQL, PostgreSQL, SQL Server, Db2, Kafka and Snowflake.
  • The FAQ lists unidirectional, bidirectional and multi-directional configurations, and says GoldenGate and OCI GoldenGate support change data capture from MongoDB and MongoDB Atlas.
  • The Iceberg guide gives dependency downloaders for Google Cloud Storage, Amazon S3 and Azure Data Lake Storage (Iceberg guide).
  • Per the FAQ, OCI GoldenGate is a fully managed service where Oracle handles backups, patching and upgrades, and the FAQ says it is also available on Google Cloud and Azure.
  • For older Oracle sources, the FAQ says GoldenGate 19c and 21c support Oracle databases from 11.2.0.4 to 21c.

Where it falls short

  • The Iceberg connection sits in the GoldenGate for Distributed Applications and Analytics guide, with Glue, Hadoop, Nessie, Polaris and REST catalogs.
  • Per the same FAQ, it can't capture from Salesforce, Teradata or TimesTen.
  • The FAQ describes the Classic Architecture (GGSCI) as "De-supported in 26ai"; the Microservices Architecture is the REST-based alternative.
  • On Oracle's price list (15 September 2026), GoldenGate is $17,500 per Processor ($350 per Named User Plus) with $3,850 annual support, and GoldenGate for Distributed Applications and Analytics, the product whose guide documents Iceberg, is $20,000 per Processor ($400 per Named User Plus) with $4,400 support. Support prices are for the first year only.

Cloud-native services​

11. AWS DMS: best for AWS-only migrations and replication​

AWS DMS home page showing its headline and main navigation

AWS DMS home page, October 2026.

At a glance

  • Method: Log-based
  • Price: Replication instance hours or Serverless DCU hours (a DCU is 2 GB of memory), plus storage (AWS DMS pricing); for example, dms.t3.medium lists at $0.0745 an hour in us-east-1, on-demand, Single-AZ (AWS price list, September 2026)

DMS reads Oracle with LogMiner or the binary reader, SQL Server with Microsoft's CDC or replication features, MySQL from row-based binary logs, PostgreSQL through logical replication slots, and MongoDB from the oplog (CDC methods).

What's good

  • Tasks can do a full load and then CDC.
  • AWS's pricing page lists three options (on-demand, serverless and Database Savings Plans), says you pay by the hour for the capacity you use, and says all data transfer into DMS is free (pricing page).
  • Each compute-optimized or memory-optimized instance type includes 100 GB of GP2 storage, and each burstable T2 or T3 type includes 50 GB (same page).
  • From DMS version 3.5.1, a CDC-only Oracle task started from an SCN or timestamp can use the openTransactionWindow setting to pick up open transactions (CDC page).
  • For sign-ups after 15 July 2025, the Free Tier lets you choose between a Free Plan and a Paid Plan for DMS (pricing page).

Where it falls short

  • AWS's CDC page says DMS CDC is not real-time replication and has no latency guarantee.
  • Apache Iceberg is not on the list of DMS targets, which does include Amazon S3, so loading Iceberg is a separate step you build.
  • Per the CDC page, views can be migrated only with full-load-only tasks, because CDC-only and full load plus CDC tasks include only tables.
  • The CDC start point is marked when the task is created and cannot be changed, and a PostgreSQL source does not support a custom CDC start time because PostgreSQL has no way to map a timestamp to an LSN.
  • For Oracle, starting a CDC task from an SCN or timestamp misses open transactions (those started before the start position and committed after it), unless you use the setting above.
  • AWS says bidirectional replication runs as two tasks, is not a full multi-master solution, and has no conflict detection or resolution. AWS suggests data validation on both tasks to find inconsistencies.

What users say: In a Hacker News thread about a PostgreSQL migration (January 2024), one commenter wrote "AWS DMS did not work for my team and we proceeded with pglogical."

12. Google Cloud Datastream: best for BigQuery on Google Cloud​

Google Datastream home page showing its headline and main navigation

Google Datastream home page, October 2026.

At a glance

  • Method: Per-source, such as the MySQL binary log
  • Price: Per GiB processed; backfill free for the first 500 GiB, then $0.40 per GiB (the pricing table says per month, a footnote on the same page says one-time per billing account); a free CDC tier of 100 GiB a month applies only to AlloyDB and Spanner sources (Datastream pricing page, October 2026)

Its sources include MySQL, Oracle, SQL Server and PostgreSQL. One thing to know before you read the price: Google warns that a "processed byte" can be 2 to 5 times larger than the real data (pricing page).

What's good

  • Its price is per GiB processed rather than per hour, and AlloyDB and Spanner sources get a free CDC tier (pricing page).
  • Usage is billed in per-byte increments, an idle stream does not incur any cost, and events that Datastream reads but does not write to the destination are not counted (pricing page).
  • CDC pricing is tiered, so the price per GB falls as your usage rises (pricing page).
  • Beyond the databases above, its sources page lists Spanner, MongoDB, Salesforce and several other application sources, some of them in Preview.
  • Iceberg tables in BigQuery keep their data in customer-owned Cloud Storage buckets, in the Iceberg table format and Parquet file format (Iceberg destination docs).

Where it falls short

  • The Iceberg destination is BigQuery-managed Iceberg tables in Cloud Storage, and Google says streaming to them is "supported only in the append-only write mode".
  • In append-only mode the change type of every event is recorded as INSERT in the datastream_metadata column that Datastream adds to each table (same docs).
  • Setup needs a Cloud Storage bucket, a BigQuery Cloud resource connection whose service account has the storage.admin permission on the bucket, and the bucket, BigQuery dataset and Datastream connection must all be in the same region.
  • In the pricing page's worked example, CDC is $2.00 per GiB for the first 2,500 GiB and $1.50 per GiB after that, before BigQuery's own processing costs, which are charged separately (pricing page).

Google Cloud Datastream overview describing serverless change data capture and replication for databases

Google Cloud's Datastream overview, October 2026.

Where does each tool land your data?​

"Does it support Iceberg?" is too loose a question. Ask which catalog (the service that tracks your Iceberg tables), which cloud, which write modes, and whether updates and deletes work.

Direct route writes Iceberg from the CDC tool; AWS DMS writes S3 files first, then Glue builds Iceberg tables

Append-only output keeps every change as its own row, so the cleanup is on you: keep the latest row per key and drop the deleted keys.

So which one should you pick?​

Your situationLook at first
Many systems need the same stream, and you run KafkaDebezium
You already run Flink and want transformsFlink CDC
Postgres, MySQL, MongoDB or SQL Server into Iceberg, self-hostedDebezium Server or OLake Go
Hands-off, many databases and SaaS appsFivetran
Vendor-run capture with usage pricingEstuary or Artie
Scheduled syncs, self-host optionAirbyte
Oracle at large scaleStriim, Qlik Replicate or GoldenGate
Mainframe sourcesQlik Replicate
Everything on one cloudAWS DMS or Datastream

Which change data capture tool fits you?

Question 1 of 5

Who should run the pipeline?

A free licence still has a bill: servers and people on call.

Open source or managed: what's the real cost?​

Three of the twelve tools are open source under Apache 2.0. Airbyte's Elastic License 2.0 and Estuary's Business Source License 1.1 are source-available licences. Airbyte's bars providing the software to others as a managed service, and Estuary's bars using it for a "Data Processing Service", and its text says it is not an Open Source license.

A free licence is not a free pipeline. Debezium's Kafka mode needs a Kafka cluster, Flink CDC needs a Flink cluster, and someone has to be on call. Managed tools swap that work for a meter: Fivetran counts rows, Estuary gigabytes and instances, Airbyte credits and Datastream processed bytes.

Here is the maths on Estuary's Cloud plan: 50 GB a month through one capture and one destination is 2 connector instances. Estuary's docs bill data "into and out of Estuary", so 50 GB is counted twice. That is 100 GB x $0.50 = $50 for data, plus $200 for instances, so $250 a month (our arithmetic from the Estuary pricing page and docs, October 2026).

What to check before you commit​

These seven checks come from failure modes the vendors' own docs describe.

1. Exact database and version support. Qlik's docs say Oracle 21c cannot use LogMiner, only Qlik's own log reader. Artie lists Oracle and SQL Server log replication on Enterprise only.

2. The initial snapshot. Most setups copy the existing rows first, then switch to changes. Debezium's PostgreSQL docs say that if the connector stops during a snapshot it starts a new one on restart, and Fivetran needs a full re-sync when you change database providers.

3. Delete handling. Timestamp-based CDC sees only soft deletes. Even log-based CDC has gaps: for MySQL, the Debezium FAQ says deletes caused by cascade delete rules are not in the binlog.

4. Schema changes. Airbyte's Iceberg connector never rewrites data files, so it handles only some changes. Striim's Iceberg Writer writes time types as strings.

5. Latency. Ask what delay you'll really see.

6. Ordering and "at least once". Debezium's docs say it delivers at least once, so duplicates can appear after a failure, though events within a topic stay in order. Flink CDC's Iceberg sink and Striim's Iceberg Writer are also at least once, so use primary keys and upserts instead of blind appends.

7. What vendors say about delay.

ToolWhat its own pages say about delay
Artie"Sub-minute latency, exactly-once delivery" on its pricing page
Estuary"Millisecond latency or batch, no extra charge" on its Cloud plan (pricing page)
AirbyteSyncs are scheduled; Standard runs at most hourly and Plus every 15 minutes (limits)

These are vendor claims, not our tests. AWS says DMS CDC has no latency guarantee.

One more for PostgreSQL. Debezium's docs warn that WAL (write-ahead log) disk space can spike when a quiet captured database shares a server with a busy one. The replication slot (PostgreSQL's log bookmark for the tool) can't move, and the fix is a heartbeat setting.

How to run a two-week trial​

Use the same test for every finalist. We haven't run it ourselves.

  • Seed rows 1, 2 and 3. Insert row 4, update row 2 twice and delete row 3.
  • Add a column, then widen a number column from 32 to 64 bits.
  • Stop the tool mid-run, then restart it. Every key should appear once.
  • Expected result: rows 1, 2 (with its second update) and 4, no row 3, no duplicates. Append-only outputs, such as Datastream's, show every change as its own record.
  • Read the bill after a week of real change volume.
Q1. What is the best change data capture tool?
It depends on who runs it and where your data has to land. Debezium suits Kafka teams, Fivetran and Artie suit teams who want a vendor to run it, and Striim, Qlik Replicate and GoldenGate suit large Oracle estates.
Q2. What are the best open source CDC tools?
Three tools here use Apache 2.0. Airbyte Core (Elastic License 2.0) and Estuary (Business Source License 1.1) are close, but they use source-available licences that restrict hosted-service use.
Q3. What is the difference between log-based and query-based CDC?
Log-based CDC reads the database's transaction log. Query-based CDC just runs queries on a schedule and needs a changed-at column, and Confluent says it handles only soft deletes.
Q4. Does CDC capture deletes?
Log-based CDC usually does, but there are exceptions. For MySQL, Debezium's FAQ says cascade deletes aren't in the binlog.
Q5. Which CDC tools can write Apache Iceberg?
Per their docs, all except AWS DMS, which has no Iceberg target. The limits differ, though: Debezium's sink is community-maintained, GoldenGate's is documented in a separate guide, Datastream is append-only and Striim writes to Google Cloud Storage or Amazon S3 Tables.
Q6. Is change data capture real time?
Not always. AWS says DMS CDC isn't real-time and has no latency guarantee, and Airbyte syncs run on a schedule.
Q7. Do I need Kafka for CDC?
Not always. Debezium Server runs without Kafka, though Debezium in Kafka Connect mode needs it, so check which mode you mean.

Conclusion​

Start with where your data must land and who will run the pipeline. Then check your database, deletes, schema changes and the "at least once" rule, and run the same trial on two or three finalists.

Next steps

Related posts