What is Bucardo?
- Bucardo is an asynchronous PostgreSQL replication system, allowing for both multi-master and multi-slave operations.
- Bucardo is very good at replicating data among Postgres databases (as well as replicating to other things, such as MariaDB, Oracle, and Redis!).
- It was developed at Backcountry.com by Jon Jensen and Greg Sabino Mullane of End Point Corporation, and is now in use at many other organizations.
- Bucardo is free and open source software released under the BSD license.
- Bucardo requires a dedicated database and runs as a Perl daemon that communicates with this database and all other databases involved in the replication. All the specific information that the daemon needs is stored in the main bucardo database, including a list of all the databases involved in the replication and how to reach them, all the tables that are to be replicated, and how each is to be replicated.
- Multi-master 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.
What is Multi-master?
A multi–master database is a distributed database that allows a record to be updated in one of many possible clustered nodes. Here All members are responsive to client data queries. he multi-master replication system is responsible for propagating the data modifications made by each member to the rest of the group, and resolving any conflicts that might arise between concurrent changes made by different members.
Compared to the default master-slave solution, it benefits on the balancing of writing load and simpler recovery upon one master node failure.
What is master-slave?
Master–slave replication enables data from one database server (the master) to be replicated to one or more other database servers (the slaves).
As the master-slave replication is a one-way replication (from master to slave), only the master database is used for the write operations, while read operations may be spread on multiple slave databases. What this means is that if master-slave replication is used as the scale-out solution, you need to have at least two data sources defined, one for write operations and the second for read operations.