From PostgreSQL wiki
Jump to navigationJump to search


Bucardo is a replication system for Postgres that supports any number of sources and targets (aka masters and slaves). It is asynchronous and trigger based.


Production Version 5.6.0


General Information

Scalability Master-slave: high with cascading slaves. Multi-master: two or more
Read scaling yes
Write scaling yes (with multimaster); no/slight inverse (master/slave only)
Triggers/procedures Yes
Parallel query No
Failover/High Availability Not automatic
Online provisioning No
PostgreSQL upgrades Yes
Detached node/WAN Yes
PostgreSQL core modifications required No
Programming languages Perl, PL/pgSQL, PL/PerlU
Licensing BSD
Complete clustering solution Yes
PostgreSQL versions 8.1 to 14

Clustering model

Asynchronous cascading master-slave replication, row-based, using triggers and queueing in the database AND Asynchronous master-master replication, row-based, using triggers and customized conflict resolution

General model: Asynchronous cascading master-slave and/or master-master. Row-based, uses triggers and LISTEN/NOTIFY.

Bucardo requires a dedicated database and runs as a Perl daemon that communicates with this database and all other databases involved in the replication. It can run as multimaster or multislave.

Multimaster replication uses two or more databases, with conflict resolution (either standard choices or custom subroutines) to handle the same update on both sides.

Master-slave replication involves one or more sources going to one or more targets. The source must be PostgreSQL, but the targets can be PostgreSQL, MySQL, Redis, Oracle, MariaDB, SQLite, or MongoDB.


  • Load balancing via slaves
  • Data warehousing via slaves
  • Slaves are not constrained and can be written to
  • Upgrading from one Postgres version to another
  • Many hooks allow for data to be changed on the fly during replication, and ease of things like cache invalidation.
  • Partial replication
  • Replication on demand (changes can be pushed automatically or when desired)
  • Will handle replication of TRUNCATE for Postgres version 8.4 or greater.
  • Slaves can be "pre-warmed" for quick setup


  • Cannot handle DDL (Postgres has no triggers on system tables)
  • Cannot handle large objects (same reason)
  • Cannot incrementally replicate tables without a unique key (it can "fullcopy" them)
  • Will not work on versions older than Postgres 8

Project Sponsors


Commercial support is available from End Point Corporation. Non-commercial support is available from the the bucardo-general mailing list, and the #bucardo channel on irc.libera.chat.

Other Information

Other Information