Galera Cluster for MySQL的介绍
文章目录
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的官方网址
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
一、主要功能
-
同步复制
-
真正的multi-master,即所有节点可以同时读写数据库
-
自动的节点成员控制,失效节点自动被清除
-
新节点加入数据自动复制
-
真正的并行复制,行级
-
用户可以直接连接集群,使用感受上与MySQL完全一致
二、优势
-
因为是多主,所以不存在Slave lag(延迟)
-
不存在丢失交易的情况
-
同时具有读和写的扩展能力
-
更小的客户端延迟
-
节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不同的
三、实现架构
Galera集群的复制功能基于Galera library实现,为了让MySQL与Galera library通讯,特别针对MySQL开发了wsrep API。
四、同步原理
在Galera Cluster中,新接入的节点叫Joiner,给joiner提供复制的节点叫Donor。
对于生产环境使用,建议设立一个专用的"参考节点",这个"参考节点"不执行任何客户端的SQL请求。
上图中红色的NODE A即为"参考节点",这样做的好处有如下几条:
1.数据一致性:
因为"参考节点"本身不执行任何客户端SQL,所以在这个节点上发生transaction冲突的可能性最小。因此如果发现集群有数据不一致的时候,“参考节点"上的数据应该是集群中最准确的。
2.数据安全性:
因为"参考节点"本身不执行任何客户端SQL,所以在这个节点上发生灾难事件的可能性最小。因此当整个集群宕掉的时候,“参考节点"应该是恢复集群的最佳节点。
3.高可用
“参考节点"可以作为专门state snapshot donor。因为"参考节点"不服务于客户端,因此当使用此节点进行SST的时候,不会影响用户体验,并且前端的负载均衡设备也不需要重新配置。
文章作者 HiOFD
上次更新 2024-04-10