CDC Replication Software for MySQL and PostgreSQL

Stream committed changes to databases, files, and S3. No Kafka required.

Write to MySQL. Read it in PostgreSQL.

MySQL → PostgreSQL · one table, side by side · insert, update, and delete replicated live

Change data capture (CDC) keeps a target system updated by reading changes from the source database's transaction log — MySQL's binlog or PostgreSQL's WAL — instead of polling for differences. Reading the log is the easy part; the hard parts are starting safely after the initial load, checkpointing only after the target acknowledges the write, and preserving order when changes are applied to the target in parallel.

DBConvert Streams reads the binlog or WAL directly, normalizes events into a single internal format, and writes them to the target through embedded JetStream — no external Kafka, no separate orchestrator. Checkpoints advance only after the target write is acknowledged, per-table ordering is preserved, and the same workflow can either start from live changes only or bootstrap an empty target first and continue with CDC.

Reads changes from

Log-based capture: MySQL binlog or PostgreSQL logical replication, self-hosted or managed.

  • MySQLMySQL
  • MariaDBMariaDB
  • PerconaPercona
  • PostgreSQLPostgreSQL
  • Amazon RDSAmazon RDS
  • AWS AuroraAWS Aurora
  • Google Cloud SQLGoogle Cloud SQL
  • Azure DatabaseAzure Database
  • NeonNeon
  • SupabaseSupabase
  • DigitalOceanDigitalOcean

Writes changes to

Any PostgreSQL or MySQL-compatible database, plus object storage and files.

  • MySQLMySQL
  • PostgreSQLPostgreSQL
  • Amazon RDSAmazon RDS
  • AWS AuroraAWS Aurora
  • Google Cloud SQLGoogle Cloud SQL
  • Azure DatabaseAzure Database
  • NeonNeon
  • SupabaseSupabase
  • Databricks LakebaseDatabricks Lakebase
  • DigitalOceanDigitalOcean
  • S3 / MinIOS3 / MinIO
  • Local filesLocal files
  • SnowflakeSnowflake Coming soon

Databricks Lakebase is a target only: it blocks the publication that logical decoding needs, so it cannot be a CDC source. There is no CDC for Oracle or SQL Server, though the DBConvert desktop tools do migrate them.

Measured Performance

Performance You Can Measure

Real numbers from local replication tests.

100 MB/s

local transfer rate

50+ GB

verified, no upper limit

~10M rows

replicated in seconds

Per-stream

parallel processing

<10 ms

processing latency

Example: MySQL → PostgreSQL — 1,000,000 rows in ~4 seconds (~100 MB/s)

Per-stream routing and worker pools for stable throughput, with protocol-native CDC readers and optimized bulk-write paths.

Workflow

How It Works

From transaction logs to reliable delivery in four steps.

1. Capture

Connects directly to MySQL binlog or PostgreSQL logical replication slots. Committed row changes are decoded from the source log and streamed as CDC events.

2. Normalize

Changes are normalized into a unified internal event format. Rolled back transactions are not delivered to the target.

3. Deliver

Events are written to target destinations. CDC messages are acknowledged only after the target write succeeds.

4. Monitor

Open a run for live metrics and checkpoint position; the config rail keeps that config’s run history together in the UI and API.

Reliability Model

Built for continuous CDC on stable infrastructure, with JetStream-backed buffering, commit-aware checkpoints, and explicit failure state when the target cannot accept a write.

  • At-least-once delivery
  • Per-table ordering preserved
  • Durable checkpoint resume
  • Rollback-safe transaction handling
  • CDC reliability state in Monitor
Start Pattern

Choose how the CDC rollout starts

Some teams start from live changes only. Others need the same CDC run to bootstrap an empty target first and then keep it current.

CDC only

Start from live changes

Use this when the target is already prepared and the main goal is ongoing replication from the current log position forward.

  • No bootstrap copy of existing source rows
  • Best when a separate migration step already happened
  • Focused on continuous change delivery and checkpoint resume

Initial Load + CDC

Bootstrap an empty target and keep it current

Use this when one CDC run should copy existing rows into an empty target first and then continue with live changes for controlled cutover.

  • Single workflow for bootstrap plus ongoing replication
  • MySQL can use Resumable Load automatically on eligible bootstrap tables
  • Good fit for empty-target cutovers that should stay current during validation
CDC stream configuration showing source and target connections, CDC events, schema policy, and write mode

The selected config makes the CDC scope, source and target, schema policy, and write mode explicit before you start. Each start then appears as a separate run under that config.

Common Use Cases

Real-Time Analytics

Stream production MySQL into a PostgreSQL analytics replica without impacting primary workload.

Controlled Cutover

Run a snapshot migration first, then keep changes flowing with CDC while you plan cutover.

Disaster Recovery

Maintain a continuously synchronized standby database across regions or providers.

Data Archival to S3

Stream database changes into compressed Parquet or CSV files with Hive-style partitioning.

Debezium — log-based CDC with Kafka.

Airbyte — log-based CDC, orchestrated as recurring sync jobs.

DBConvert Streams — continuous CDC without external infrastructure.

FAQ

Technical questions

What does "log-based CDC" actually read?

On MySQL it reads the binary log (binlog) using the standard replication protocol — the same one a MySQL replica uses. On PostgreSQL it reads from a logical replication slot using the standard logical-decoding output. No triggers, no polling, no source-side schema changes.

Is delivery exactly-once?

No. Delivery is at-least-once, which means a target write may occasionally repeat after a failure. Targets should be configured with idempotent writes (upsert / merge by primary key) so that retries do not produce duplicates.

What happens if the target write fails?

The CDC checkpoint is not advanced until the target acknowledges the write. If the target rejects a write or becomes unavailable, the stream stops in an explicit failure state and resumes from the last committed checkpoint when restarted — not from the latest source position.

What about long-running transactions and CDC lag?

CDC events are emitted only after the source commits a transaction. Long-running transactions delay the visibility of their events because the entire transaction is held until commit. This is a property of log-based CDC in general, not specific to DBConvert Streams.

What about schema changes on the source?

DBConvert Streams does not automatically replicate DDL. When you change the source schema (for example, add a column or change a type), apply the corresponding compatible change to the target as part of your operational procedure, then resume the stream.

Start with a controlled CDC test

Validate source and target state first, then run the CDC path you plan to use for cutover.

Use pricing when you are ready to size production streams and team seats.

See Product Overview