前期回顾

主机名 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';
1.png

3. 加入其他节点

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

rac2

service mysqld start

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

2.png

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

3.png

rac3

service mysqld start
4.png

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

5.png

4. 注意事项

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

5. 参考资料

https://galeracluster.com/library/training/tutorials/starting-cluster.html

上一章

下一章