Best Postgres Replication Tools in 2026

Intergalactic Data Labs
—
—
14 min read
Postgres replication tools fall into three families in 2026. The built-in methods, streaming replication for standbys and logical replication for selective Postgres to Postgres copies. Self-run change data capture engines such as Debezium, Filament, and PeerDB that read the logical slot and write to warehouses and lakes. And managed pipelines such as Fivetran and Airbyte, billed by rows or gigabytes. Destination, deletes, and who runs the software decide the pick.
Tool | Job | Method | Deploy | License | Pricing unit |
|---|---|---|---|---|---|
Filament | Postgres to Postgres, warehouse, lake | pgoutput, parallel snapshot | Binary, Go library, Helm | Apache 2.0 | None |
Logical replication | Postgres to Postgres, selective | pgoutput, built in | Core Postgres | PostgreSQL | None |
Streaming replication | Standbys and failover | Physical WAL | Core Postgres | PostgreSQL | None |
Debezium | Change feed on Kafka | pgoutput to Kafka Connect | JVM stack | Apache 2.0 | None |
PeerDB | Postgres to ClickHouse | pgoutput, Temporal | Docker Compose, ClickPipes | AGPLv3 | GB plus compute |
pglogical | Postgres to Postgres, pre-PG10 | Own output plugin | Extension | PostgreSQL | None |
Fivetran | Managed, many destinations | pgoutput or query based | SaaS, hybrid | Proprietary | Monthly active rows |
Airbyte | Open catalog, managed or self | Debezium embedded | Cloud or Core | ELv2 | Credits per GB |
AWS DMS | Migration into AWS | test_decoding or pglogical | AWS only | Proprietary | Instance hour |
pgEdge Spock | Multi-master Postgres | Logical, bidirectional | Extension, managed | PostgreSQL | Managed quote |
What does Postgres replication actually mean?
Postgres replication is any method that keeps a second system in step with committed changes on a Postgres primary, and the word covers two different mechanisms. The Postgres docs separate physical replication, which uses "exact block addresses and byte-by-byte replication", from logical replication, which copies data objects "based upon their replication identity (usually a primary key)."
Physical replication clones the cluster, logical replication ships rows. Streaming replication sends WAL records to a standby "as they're generated", per the warm standby docs, and that standby serves reads but not writes. It only works between the same major version. Logical replication copies a snapshot of each table, then streams later changes, so it crosses versions and lets the subscriber hold its own data.
Logical decoding is also the foundation every external tool builds on. Postgres exposes committed changes through a replication slot and an output plugin, and pgoutput "is the standard one used for the built-in logical replication." A CDC engine opens its own slot and writes wherever Postgres cannot. The restrictions page says "the database schema and DDL commands are not replicated" and "sequence data is not replicated."
How should you choose a Postgres replication tool?
Six criteria separate these tools, and the first one, the destination, eliminates most candidates before anything else matters. Built-in replication only reaches another Postgres. A warehouse or lake needs an engine that writes typed tables or Parquet files.
Criterion | What to check | Why it matters |
|---|---|---|
Destination | Postgres only, or warehouse and lake too | Built-in methods stop at Postgres |
Deletes and DDL | Log based, query based, DDL channel | Query based capture misses hard deletes |
Snapshot consistency | One point for baseline and stream | Otherwise gaps or duplicates after the copy |
Recovery | Checkpoints, resume, delivery guarantee | A restart from zero on 300M rows is a day lost |
Footprint | Extension, binary, JVM, Kafka, SaaS | Each moving part is an outage path |
Cost model | Rows, GB, credits, hours, or none | Per-row meters grow with your success |
On deletes, the difference is mechanical. Log based capture sees every committed change. Query based capture polls a column such as xmin, and Fivetran's docs say that mode "does not preserve details about deleted rows." On recovery, Debezium's docs set the ceiling, exactly once in normal operation and "at least once delivery of change events" after a fault.
The best Postgres replication tools in 2026, ranked
The ranking serves a team that owns a production Postgres and needs a current copy somewhere else. Entries two and three are the built-in methods and belong on any Postgres to Postgres shortlist. External tools are ordered by how many of the six criteria they clear.
1. Filament. A Go replication engine that runs as one binary or a Go library, reading Postgres in full, incremental, or CDC mode through pgoutput. Per the Postgres source docs, each table is first read through the slot's exported snapshot, "so the baseline and the change stream share one consistent point." Destinations include Postgres, ClickHouse, Snowflake, BigQuery, Iceberg, and S3. The limit is source breadth, Postgres and MySQL only.
2. Postgres logical replication. The built-in publish and subscribe method, needing nothing beyond wal_level=logical, a publication, and a subscription, and the right default for a selective Postgres to Postgres copy or a cross-version upgrade. The logical replication docs describe a snapshot copied to the subscriber, then changes "sent continually." The limits are the DDL and sequence gaps above, and the subscriber must be Postgres.
3. Postgres streaming replication. The physical method and the only entry that gives you a failover target. The warm standby docs note it is "asynchronous by default" and that shipping between different major versions "is not possible." Pair it with Patroni or repmgr for automatic promotion. It cannot filter tables or feed a warehouse.
4. Debezium. The reference open source CDC engine, Apache 2.0 per its LICENSE, reading pgoutput and publishing each table to its own Kafka topic. Its strength is fan-out to many consumers. The cost is the stack, since the architecture docs say "most commonly, you deploy Debezium by means of Apache Kafka Connect", and no warehouse writer ships in the box.
5. PeerDB. A Postgres-first engine that ClickHouse acquired and now ships as the ClickPipes Postgres connector, with TOAST caching as its best trick. The limits are target and weight. Only ClickHouse and Postgres destinations are actively maintained, the architecture needs Temporal plus a catalog Postgres, and the LICENSE file is AGPLv3 although the README badge says ELv2.
6. pglogical. The 2ndQuadrant extension that gave Postgres logical replication before the core shipped it, still maintained with a maintenance release in July 2026. Its strength is row filtering on older clusters. The README says EnterpriseDB now focuses new features on its descendant, Postgres Distributed, and that "automatic DDL replication is not supported." Pick it for a legacy cluster, not a new design.
7. Fivetran. The widest managed catalog, a connector that supports pgoutput, and the answer for a team that will not operate replication software. The meter is the concern. Fivetran bills by monthly active rows, "the number of distinct rows synced from the source system to your destination system in a given calendar month." Its query based fallback drops deletes, and one-minute syncs sit on the Enterprise tier.
8. Airbyte. The largest open connector catalog, a free self-hosted Core, and CDC that embeds Debezium. The Postgres source docs list "CDC, xmin and standard" methods, and the troubleshooting page notes a CDC source "can only be used with a single Airbyte destination." The platform LICENSE is ELv2 and Cloud bills 4 credits per GB.
9. AWS DMS. The easy answer for a migration into AWS, with full load plus CDC from Postgres into RDS, Aurora, Redshift, or S3. The source docs say DMS "uses either test_decoding or pglogical plugin", and the CDC task docs state "there are no SLAs for CDC latency." Billing is by instance hour, inside AWS only.
10. pgEdge Spock and EDB Postgres Distributed. The two multi-master options, both descended from pglogical. The Spock README provides "multi-master replication for PostgreSQL" under the PostgreSQL license, and EDB PGD adds "DDL replication, replication sets, sequences, stream triggers" on a commercial stack. Pick these when every node must accept writes.
Ten more tools replicate from Postgres but serve one destination, one cloud, or a shrinking niche.
Tool | Method | Writes | License or pricing | Why not ranked |
|---|---|---|---|---|
Estuary Flow | pgoutput, SaaS | Warehouses, lakes, databases | BSL 1.1, $0.50 per GB plus $100 per connector | Hosted, GB meter |
dlt pg_replication | pgoutput, Python | dlt destinations | Apache 2.0 | Library, no DDL, superuser for schemas |
Sling | Logical, CLI | Databases, Iceberg | GPLv3, CDC needs Pro Max at $149 a month | Paywalled CDC |
ingestr | pgoutput, Go CLI | Many | FSL 1.1 | Soft deletes only |
OLake | pgoutput | Iceberg, Parquet | Apache 2.0 | Lake targets only |
Google Datastream | pgoutput | BigQuery, GCS, Iceberg | $2.00 per GiB to 2,500 GiB | Google Cloud only |
Hevo | pgoutput | Warehouses | Events, from $299 a month | Hosted, hourly sync |
Stitch | wal2json | Warehouses | Rows, from $100 a month | Needs wal2json, master only |
Bucardo | Triggers | Postgres, multi-master | BSD | Last release 2020 |
Slony-I | Triggers | Postgres | BSD style | Last release 2022, no DDL |
How we ranked these Postgres replication tools
Each entry was scored on the six criteria from its own documentation, its LICENSE file rather than a README badge, and its public pricing page, all fetched on October 1, 2026. Where a tool ran in the 2026-08-31 cohort, a full load of 298,270,427 NYC Taxi rows from one RDS Postgres to another, 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 | Repetitions |
|---|---|---|---|---|
Filament | 115 | 2,597,498 | 2.97 GiB | 3 |
dlt | 296 | 1,007,711 | 45.54 GiB | 3 |
PeerDB | 415 | 718,368 | 1.20 GiB across 7 containers | 3 |
pg_dump to psql | 489 | 610,267 | 0.01 GiB | 3 |
ingestr | 611 | 488,233 | 4.83 GiB | 3 |
Sling | 1,053 | 283,188 | 0.10 GiB | 3 |
Debezium | 6,559 | 45,476 | 15.70 GiB | 1 |
Airbyte | 10,393 | 28,698 | 12.82 GiB source container | 1 |
The Debezium row is its initial snapshot with a JDBC sink, not the steady-state streaming it is built for, and the benchmark README says so. The methodology verifies row counts, not row contents. Fivetran, Estuary, DMS, and the built-in methods did not run, so they carry no number here.
Where Filament fits against these criteria
Filament clears all six criteria for a Postgres team, and its real limit sits outside them, since it reads Postgres and MySQL and nothing else. Galaxy builds Filament, so weigh this section accordingly. The Postgres source and sink are both beta, per the connector overview, meaning they run end to end but are not yet verified for every environment.
On destination, one engine writes typed tables to Postgres and the warehouses, and Parquet to Iceberg, S3, and GCS. On deletes, CDC streams pgoutput and the Postgres sink applies cdc_merge, where "inserts and updates upsert, and deletes delete."
On recovery, every batch carries a CRC32-C checksum that the sink recalculates. The integrity docs explain the check "is sensitive to row order, column order, nulls, values, and operations. It is not based only on row counts." A failed run resumes from its checkpoint rather than restarting.
On footprint, the local CLI uses SQLite with no Postgres or NATS, and production is one Helm chart with Postgres and NATS JetStream. On cost, the LICENSE is Apache 2.0 and there is no meter.
On the baseline copy, Filament loaded the cohort in 115 s, the fastest wall time of the seven tools measured and 4.3 times faster than pg_dump piped into psql.
How to replicate Postgres with Filament
Two prerequisites on the source, then one pipeline definition. Set wal_level=logical if you want CDC, which the Postgres docs say "can only be set at server start", and give every streamed table a primary key, since incremental and CDC modes reject keyless tables.
Install with one command from the installation page, then create the source, the sink, and the pipeline. The commands below are the documented CLI example for a Postgres to Postgres copy.
The first run reads each table in up to 64 parallel ranges, encodes rows into binary COPY, and checkpoints after every written batch. To turn the copy into a live mirror, set replication: cdc on the source and write_mode: merge on the pipeline. Filament then creates the publication and slot, copies each table through the exported snapshot, and streams changes in bounded catch-up cycles that can run on a cron.
What are the common pitfalls with Postgres replication?
Four failures show up with every tool on this list, built-in methods included.
Replication slots hold WAL until the consumer confirms it. The logical decoding docs warn that in extreme cases "this could cause the database to shut down to prevent transaction ID wraparound."
DDL does not travel through logical decoding, so an
ALTER TABLEon the primary reaches no subscriber on its own.Updates and deletes need a replica identity, and the publication docs say tables without one "cannot support UPDATE or DELETE operations."
An update that leaves a TOAST column untouched arrives without its value unless the table has
REPLICA IDENTITY FULLor the tool caches it.
Which Postgres replication tool fits which job?
Pick by the constraint that breaks first.
Constraint | Pick | Why |
|---|---|---|
Failover and read replicas | Streaming replication | Physical standby, promotes in seconds |
Selective Postgres to Postgres, same team | Logical replication | Built in, no extra software |
Warehouse, lake, or Postgres, run it yourself | Filament | Consistent bootstrap, checksums, one binary, no meter |
Many consumers share one change feed | Debezium | Ordered Kafka topics |
Target is ClickHouse | PeerDB | Native ClickPipes path |
Postgres older than 10 | pglogical | Logical replication as an extension |
No engineers to run software | Fivetran | Managed, widest catalog |
Migration into AWS | AWS DMS | Native service, hourly billing |
Every node accepts writes | pgEdge Spock or EDB PGD | Multi-master with DDL replication |
For the main reader, a team that keeps data in its own network and needs Postgres mirrored into a warehouse, a lake, or a second Postgres, Filament is the pick because it meets all six criteria with documented behavior. For failover, use streaming replication. For a Kafka change bus, use Debezium.
Related guides
Frequently asked questions
What are the main types of Postgres replication?
Postgres ships two methods. Physical streaming replication copies the write-ahead log byte for byte to a standby that is a read-only clone of the whole cluster. Logical replication decodes committed changes to selected tables and sends them through a publish and subscribe model. External tools build on logical decoding to reach warehouses, lakes, and other databases.
What is the difference between streaming replication and logical replication in Postgres?
Streaming replication mirrors the entire cluster at the block level, needs the same major version on both sides, and produces a standby you cannot write to. Logical replication works per table, crosses major versions, and lets the subscriber hold other data, but it does not carry DDL, sequences, or large objects. Use streaming for failover and logical for selective copies.
Which Postgres replication tool is best for high availability?
Built-in streaming replication with a cluster manager such as Patroni or repmgr is the standard answer for failover and read replicas. The standby stays within seconds of the primary and can promote when the primary fails. Logical replication and CDC tools are not failover tools, they move data to other systems.
What is the best open source Postgres replication tool?
It depends on the destination. For Postgres to Postgres the built-in logical replication needs no extra software. For a shared change feed on Kafka, Debezium is the reference engine. For copies into a warehouse, lake, or another Postgres that you run yourself, Filament is an Apache 2.0 engine with checkpointed full, incremental, and CDC reads and the fastest full load in the public cohort.
Does Postgres logical replication replicate schema changes?
No. The Postgres docs state that the database schema and DDL commands are not replicated, so the initial schema is copied with pg_dump and later changes must be kept in sync by hand. Sequences and large objects are not replicated either. Most CDC engines inherit the same limit, while EDB Postgres Distributed and pgEdge Spock add DDL replication.
Why does a replication slot fill up disk?
A replication slot keeps every WAL segment its consumer has not yet confirmed, and the Postgres docs warn that slots persist across crashes and know nothing about the state of their consumers. If the subscriber or CDC tool stops, WAL keeps growing until disk runs out. Set max_slot_wal_keep_size, monitor slot lag, and drop slots nobody uses.
How do you replicate Postgres to Postgres with Filament?
Install the binary, create a source and a sink that each point at a Postgres DSN, then create a pipeline that lists the tables, a sync mode, and a write mode. A full run copies tables in parallel ranges and checkpoints each batch. Setting replication to cdc on the source streams changes through pgoutput after an initial copy taken from the slot's exported snapshot.
Is Filament faster than pg_dump for copying a Postgres database?
In the public 2026-08-31 cohort, Filament copied the NYC Taxi tables from one Postgres to another in 115 seconds, while piping pg_dump into psql took 489 seconds on the same hardware. The cohort does not measure incremental or CDC throughput, so the comparison is limited to the initial copy.
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
Copyright © 2026 Galaxy. All rights reserved.