Galera是由Codership公司开发的一套免费开源的高可用方案,是一个MySQL(也支持MariaDB,Percona)的同步多主集群软件。其本身具有multi-master特性,支持多点写入。Galera Cluster的三个(或多个)节点是对等关系,每个节点均支持写入,集群内部会保证写入数据的一致性与完整性。Galera目前只支持InnoDB引擎,不支持Lock Table。

                                          [![Galera Cluster架构图](images/1677314758824008.png "Galera Cluster架构图")](images/1677314758824008.png)

Galera Cluster的官方网址

https://galeracluster.com/

Galera Cluster早期在Mariadb的关于MariaDB Galera Cluster文章

https://mariadb.com/kb/en/galera-cluster/

Galera Cluster相关限制

https://mariadb.com/kb/en/mariadb-galera-cluster-known-limitations/

迁移至Galera Cluster

https://galeracluster.com/library/training/tutorials/migration.html

一、主要功能

  1. 同步复制

  2. 真正的multi-master,即所有节点可以同时读写数据库

  3. 自动的节点成员控制,失效节点自动被清除

  4. 新节点加入数据自动复制

  5. 真正的并行复制,行级

  6. 用户可以直接连接集群,使用感受上与MySQL完全一致

二、优势

  1. 因为是多主,所以不存在Slave lag(延迟)

  2. 不存在丢失交易的情况

  3. 同时具有读和写的扩展能力

  4. 更小的客户端延迟

  5. 节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不同的

三、实现架构

Galera集群的复制功能基于Galera library实现,为了让MySQL与Galera library通讯,特别针对MySQL开发了wsrep API。

Galera Cluster实现架构图1

Galera Cluster实现架构图2

Galera Cluster实现架构图3

四、同步原理

在Galera Cluster中,新接入的节点叫Joiner,给joiner提供复制的节点叫Donor。

Galera Cluster同步原理图

对于生产环境使用,建议设立一个专用的"参考节点",这个"参考节点"不执行任何客户端的SQL请求。

Galera Cluster参考节点架构图

上图中红色的NODE A即为"参考节点",这样做的好处有如下几条:

1.数据一致性:

因为"参考节点"本身不执行任何客户端SQL,所以在这个节点上发生transaction冲突的可能性最小。因此如果发现集群有数据不一致的时候,“参考节点"上的数据应该是集群中最准确的。

2.数据安全性:

因为"参考节点"本身不执行任何客户端SQL,所以在这个节点上发生灾难事件的可能性最小。因此当整个集群宕掉的时候,“参考节点"应该是恢复集群的最佳节点。

3.高可用

“参考节点"可以作为专门state snapshot donor。因为"参考节点"不服务于客户端,因此当使用此节点进行SST的时候,不会影响用户体验,并且前端的负载均衡设备也不需要重新配置。