Galera replication happens at transaction commit time by broadcasting the transaction write set to the cluster for applying. The client connects directly to the DBMS and experiences close to native DBMS behavior. The wsrep API (write set replication API) defines the interface between Galera replication and the DBMS.
Synchronous vs. Asynchronous Replication
The basic difference between synchronous and asynchronous replication is that "synchronous" guarantees that if changes happened on one node of the cluster, they happened on other nodes "synchronously", or at the same time. "Asynchronous" gives no guarantees about the delay between applying changes on "master" node and the propagation of changes to "slave" nodes. The delay can be short or long. This also implies that if master node crashes, some of the latest changes may be lost.
Theoretically, synchronous replication has a number of advantages over asynchronous:
- it is always highly available (there is no data loss when one of the nodes crashes, and data replicas are always consistent)
- transactions can be executed on all nodes in parallel
- it can guarantee causality across the whole cluster (A SELECT issued after a transaction will always see the effects of the transaction even if it is executed on another node)
However, in practice, synchronous database replication has traditionally been implemented via the so-called "2-phase commit" or distributed locking which proved to be very slow. Low performance and complexity of implementation of synchronous replication led to a situation where asynchronous replication remains the dominant means for database performance scalability and availability. Widely adopted open-source databases such as MySQL or PostgreSQL offer only asynchronous replication solutions.
Certification Based Replication Method
An alternative approach to synchronous database replication using Group Communication and transaction ordering techniques was suggested by a number of researchers (e.g. Database State Machine Approach and Don't Be Lazy, Be Consistent) and prototype implementations have shown a lot of promise. We combined our experience in synchronous database replication and the latest research in the field to create the Galera Replication Toolkit.
Galera replication is a highly transparent and scalable synchronous replication solution for application clustering to achieve high availability and improved performance. Galera-based clusters are:
- Highly available
- Highly transparent
- Highly scalable (near linear scalability may be reached depending on the application)
Generic Replication Library
Galera replication functionality is implemented as a shared library and can be linked with any transaction processing system which implements the wsrep API hooks.
The Galera replication library is a protocol stack providing functionality for preparing, replicating and applying of transaction write sets. It consists of:
- wsrep API specifies the interface — responsibilities for DBMS and replication provider
- wsrep hooks is the wsrep integration in the DBMS engine.
- Galera provider implements the wsrep API for Galera library
- certification layer takes care of preparing write sets and performing certification
- replication manages replication protocol and provides total ordering capabilities
- GCS framework provides plugin architecture for group communication systems
- many gcs implementations can be adapted, we have experimented with spread and our in-house implementations: vsbes and gemini