上次我们简单介绍了Galera for mysql的基本原理,这次我们就动手去亲自搭建这样一个集群,有实践才有收获,在实践过程中会发现很多问题,解决问题的过程也就是进步的过程。
其实说到mysql集群,你可能会疑惑,Galera cluster,PXC,MariaDB集群这三个究竟有什么区别?其实他们都大同小异,Galera集群使用的数据库是mysql,PXC使用的是xtraDB,MariaDB使用的是MariaDB,底层都是差不多的,说白了都是mysql,就是做了一点改造而已。
言归正传,安装过程是按照官方文档去做的,我的系统是centos 6+mysql 5.6,搭建的节点为3个,也就是说你必须有三台机器或者三个容器,因为公司有现成的容器可以使用,我用的容器去搭建的集群。
第一步,网络设置。
这个不言而喻,因为节点之间肯定是要进行通信的,网络不通肯定集群是起不来的,所以首先我们需要设置防火墙,禁用SELinux等一系列操作,目的就是保持节点之间的交流通畅。这个是自己环境不同而定,在此就不展开描述。
第二步:选择相应的安装方式并安装。
官方方式有source和binary,我选用的是binary方式。
对于centos系统来说,首先配置yum源。在/etc/yum.repos.d/ 的目录下编辑gelare.repo文件。
[galera]
name = Galera
baseurl = http://releases.galeracluster.com/galera-3/DIST/RELEASE/ARCH
gpgkey = http://releases.galeracluster.com/GPG-KEY-galeracluster.com
gpgcheck = 1
[mysql-wsrep]
name = MySQL-wsrep
baseurl = http://releases.galeracluster.com/mysql-wsrep-VERSION/DIST/RELEASE/ARCH
gpgkey = http://releases.galeracluster.com/GPG-KEY-galeracluster.com
gpgcheck = 1
注意需要替换掉相应的参数:
VERSION是mysql-wsrep的版本,如5.6;
DIST是操作系统,如centos;
RELEASE是操作系统版本,如6;
ARCH是系统架构,如x86_64;
视自己的环境不同作出相应的更改。
源配置好之后,就可以安装了,很简单,只需执行以下命令:
yum install galera-3 \
mysql-wsrep-5.6
不出意外的话就会安装成功。
第三步:配置文件
在每个节点上都安装galera之后,我们就可以进行配置文件的修改了。在my.cnf中,wsrep主要有这些配置参数
wsrep_provider=/usr/lib64/galera-3/libgalera_smm.so
wsrep_provider_options="gcache.size=300M; gcache.page_size=300M"
wsrep_cluster_name=sumey
wsrep_cluster_address="gcomm://10.96.92.1,10.96.92.2,10.96.92.3"
wsrep_node_name=sumey1
wsrep_node_address="10.96.92.1"
wsrep_sst_method=rsync
其中,wsrep_provider这个参数很重要,不配置它的话就会正常启动单一的mysql而不会去启动一个集群;wsrep_cluster_name是集群的名字,自己随意取就好;wsrep_cluster_address 这个是你所有节点的ip;wsrep_node_name是你这个节点的name,也是自己取名字,wsrep_node_address是你这个节点的ip;wsrep_sst_method=rsync是SST的方式,rsync是默认方式,你可以根据需要修改。
第四步:启动
安装也装完了,配置也OK了,这时候就可以启动了,任意选取一个节点,执行:
service mysql start --wsrep-new-cluster
后面的参数表示我要新启动一个集群,第一个节点一定要加上这个参数,然后登陆到mysql ,执行:
show status like "wsrep_cluster_size"
不出意外的话,就会显示1,表明这个集群内现在只有一个节点。
如果不是,就可以去看一下mysql的错误日志,看看出了什么问题。
其他的节点依次执行:
service mysql start
这个时候就不需要 --wsrep-new-cluster参数了,然后show一下cluster size,就会看到节点的数量增加了。
理想的情况就是这个过程,事实证明大部分情况下都是不理想的。比如我自己搭建的时候就遇见了很多问题:
如mysql启动失败
这个原因很多,谷歌解决方法很多,在此不再赘述。
如启动了但是并没有去加载我的配置
这个问题一般是由于mysql是按照一定的顺序去加载配置文件的,有好几个文件,你的文件排序靠后,并没有执行到。
集群搭建完毕,你可以自己去实验一下,看看数据的同步,看看日志,慢慢研究就好。我曾经就因为自己做了一些破坏性实验,导致每个节点的数据都不一样,但是集群依然保持完整,没有脑裂也没有节点被踢出集群。是的,我修改了一些关键文件,使得每个节点都认为自己和整个集群的数据是一致的,而且不需要同步,节点被欺骗了!
其实galera这块内容很多也很杂,资料也不够多,多看官方文档是个很好的习惯。时间仓促,有错误之处希望大家批评指正!