## 前期回顾

| 主机名 |IP地址|操作系统 |MySQL版本|插件版本|
| --- | --- | --- |  --- | ---|
| rac1 | 11.12.14.29| Redhat 6.10|5.7.26|25.3.27|
| rac2| 11.12.14.30| Redhat 6.10|5.7.26|25.3.27|
| rac3 | 11.12.14.39 | Redhat 6.10|5.7.26|25.3.27|


前面我们说了Galera Cluster有三种不同的分支

- MySQL Galera Cluster by Codership
- Percona XtraDB Cluster by Percona
- MariaDB Galera Cluster (5.5 and 10.0) by MariaDB

这里我们以官方的软件来做演示,即第一个

## 1. 软件组成

Galera Cluster由两部分组成

- the Galera Replication Library (galera-3) 
- a version of MySQL extended with the Write Set Replication (WSREP) API 


第一个即Galera 插件 

第二个为集成了wsrep API的 MySQL服务器软件

以上意味着我们需要安装一个Galera版本的MySQL数据库和一个Galera插件



## 2. 引导Galera Cluster
  
 在装好MySQL软件和galera插件并设置好相应的参数后,我们可以建立集群了
 
 和MGR一样,在集群首次启动时需要引导(bootstrap)集群
 
 在此之前我们再检查下服务器配置
 
 - 集群内节点数据库版本需要一致,目录结构一致
 - 如果使用了防火墙,请确保各节点TCP的4444,4567,4568和UDP的4567断开相通
 - selinux需配置允许访问mysqld
 - 配置正确wsrep_provider参数


我们使用--wsrep-new-cluster参数来引导集群,如果三台数据库都是空的,我们可以选择任意一台引导,如果有数据库有数据,我们选择该数据库来引导

类似于MGR的boostrap

这里我们使用rac1来引导

**rac1**

注意我们只能在第一个启动集群,或者集群整体重启时使用该参数

```
service mysqld start --wsrep-new-cluster
```

之后我们使用如下命令查看是否启动正常

```
SHOW STATUS LIKE 'wsrep_cluster_size';
```


[image:753 size:orig]



## 3. 加入其他节点

当第一台引导完成,剩下的就很简单的,我们只需要正常启动数据库即可

**rac2**

```
service mysqld start
```

这时rac2会变成JOINER并申请同步,由于是第一次加入,会选举rac1为donor会采用SST的形式,使用rsync方法


[image:754 size:orig]

之后再查询下目前集群的大小


[image:755 size:orig]


**rac3**

```
service mysqld start
```

[image:756 size:orig]

这时所有的节点都是可读写的


[image:757 size:orig]

## 4. 注意事项

- 这里和MGR不同的是这里不需要备份还原,Galera会自动备全库后恢复到新加入的节点(SST)
- 请不要在少于3个节点时候关闭数据库,否则需要重新引导
- 集群建好后,如果需要全部关闭,在启动时需要重新引导
 - 对于MyISAM等非事务表,只会同步DDL不会同步DML,如新建一张MyISAM表并插入数据,其他节点会新建表但是不会插入数据(行数为0)


## 5. 参考资料

[https://galeracluster.com/library/training/tutorials/starting-cluster.html](https://galeracluster.com/library/training/tutorials/starting-cluster.html)

[上一章](http://www.zhaibibei.cn/mysql/galera/tutorial6)

[下一章](http://www.zhaibibei.cn/mysql/galera/tutorial8)