01 前言
Galera Cluster是Mysql基于innodb引擎,来实现multi-master及数据实时同步,并且免费开源的高可用方案。其特点有:对业务层提供透明接口;数据库读写自动分发各节点,无需手动做读写分离;并且统一管理集群成员(节点自动增删)。
Galera Cluster的官方网站为http://galeracluster.com,具体的特性请查询官网资料。
Galera Cluster常用的方案有三种:Galera Cluster for MySQL、MariaDB Galera Cluster、Percona XtraDB Cluster。本文主要使用MariaDB Galera Cluster来做演示。
本文转自我个人的公众号:天目星 ,请大家多多关注。

一、使用的软件与架构图
linux:CentOS 7.5.1804
MariaDB-server:MariaDB-server-10.2.23
MariaDB-client:MariaDB-client-10.2.23
MariaDB-common:MariaDB-common-10.2.23
MariaDB-backup:MariaDB-backup-10.2.23
galera:galera-25.3.26
二、安装软件
1、使用yum源安装
我们使用三台主机做测试环境
node1:192.168.159.45
node2:192.168.159.46
node3:192.168.159.47
在每台主机增加一个repo文件
$ vim /etc/yum.repos.d/mariadb.repo
#
[mariadb]
name=MariaDB
baseurl=http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
#
在三台节点中安装
$ yum install galera MariaDB-server MariaDB-client \
MariaDB-backup
2、配置
设置galera cluster的基础配置
节点1
$ vim /etc/my.cnf.d/server.cnf
#
[mysqld]
server_id=1 #mysql ID,每台不一样
datadir=/data #提前创建好文件夹,并授予mysql用户读写权限
user=mysql #启动mariadb的用户
skip-external-locking
skip-name-resolve
character-set-server=utf8
[galera]
wsrep_on=ON #开启集群同步复制模式
wsrep_causal_reads=ON #各节点应用完事务才返回查询请求,可以避免脏读
wsrep_provider_options="gcache.size=1G" #按照binglog一小时产生的大小*4来配置
wsrep_certify_nonPK=ON #为没有主键的表自动生成主键
wsrep_provider=/usr/lib64/galera/libgalera_smm.so #wsrep库的位置
wsrep_cluster_name=My-Cluster #集群名称
wsrep_cluster_address="gcomm://192.168.159.45,192.168.159.46,192.168.159.47" #集群成员
wsrep_node_name=node1 #此节点的名称
wsrep_node_address=192.168.159.45 #此节点的IP地址
wsrep_slave_threads=1 #并行应用Galera集群的从属线程数,如果经常出现一致性问题,请设置为1
wsrep_sst_method=mariabackup #集群同步的模式,测试可以使用rsync,如果生产环境请使用mariabackup
wsrep_sst_auth='root:123456' #集群同步开启验证
default_storage_engine=InnoDB #设置默认创建的数据库引擎为InnoDB
log-bin=/data/mysql-bin #开启binglog,可以用于从库复制
log_slave_updates=1 #配合上一条用于从库复制用