简介

Galera Cluster是由Codership开发的MySQL多主结构集群,这些主节点互为其它节点的从节点。不同于MySQL原生的主从异步复制,Galera采用的是多主同步复制,并针对同步复制过程中,会大概率出现的事务冲突和死锁进行优化,就是复制不基于官方binlog而是Galera复制插件,重写了wsrep api。

异步复制中,主库将数据更新传播给从库后立即提交事务,而不论从库是否成功读取或重放数据变化。这种情况下,在主库事务提交后的短时间内,主从库数据并不一致。

同步复制时,主库的单个更新事务需要在所有从库上同步 更新。换句话说,当主库提交事务时,集群中所有节点的数据保持一致。

对于读操作,从每个节点读取到的数据都是相同的。对于写操作,当数据写入某一节点后,集群会将其同步到其它节点。

Galera cluster

就各个集群方案来说,其优势为:

  • 多主多活下,可对任一节点进行读写操作,就算某个节点挂了,也不影响其它的节点的读写,都不需要做故障切换操作,也不会中断整个集群对外提供的服务。
  • 拓展性优秀,新增节点会自动拉取在线节点的数据(当有新节点加入时,集群会选择出一个Donor Node为新节点提供数据),最终集群所有节点数据一致,而不需要手动备份恢复。

其劣势为:

  • 能做到数据的强一致性,毫无疑问,也是以牺牲性能为代价。

环境信息

  • Linux版本:CentOS 7.8.2003 * 3
  • MySQL版本:5.7.34
  • Galera版本:3.25.3.34
  • MySQL Wsrep版本:5.7.34

基础配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 1. 配置/etc/hosts文件,主机名解析

# 2. 关闭firewalld与selinux

# 3. 修改时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
timedatectl set-timezone Asia/Shanghai

# 4. 配置yum源
cat > /etc/yum.repos.d/galera.repo <<EOF
[galera]
name=galera
baseurl=http://releases.galeracluster.com/galera-3/centos/7/x86_64/
enabled=1
gpgcheck=0

[mysql-wsrep]
name=mysql-wsrep
baseurl=http://releases.galeracluster.com/mysql-wsrep-5.7/centos/7/x86_64/
enabled=1
gpgcheck=0
EOF

安装配置

安装

1
yum install -y mysql-wsrep-5.7 galera-3

参考文档