Galera cluster for MySQL 集群安装与配置

安装galera,mysq-wsrep,xtrabackup

1.安装galera,mysq-wsrep

yum install libboost_program_options.so.1.53.0 boost-program-options lsof perl-Data-Dumper rsync -y
yum remove mysql-libs -y
wget http://releases.galeracluster.com/centos/7/x86_64/galera-3-25.3.19-2.el7.x86_64.rpm
wget http://releases.galeracluster.com/centos/7/x86_64/mysql-wsrep-5.6-5.6.34-25.18.el7.x86_64.rpm
wget http://releases.galeracluster.com/centos/7/x86_64/mysql-wsrep-client-5.6-5.6.34-25.18.el7.x86_64.rpm
wget http://releases.galeracluster.com/centos/7/x86_64/mysql-wsrep-devel-5.6-5.6.34-25.18.el7.x86_64.rpm
wget http://releases.galeracluster.com/centos/7/x86_64/mysql-wsrep-server-5.6-5.6.34-25.18.el7.x86_64.rpm
wget http://releases.galeracluster.com/centos/7/x86_64/mysql-wsrep-shared-5.6-5.6.34-25.18.el7.x86_64.rpm
wget http://releases.galeracluster.com/centos/7/x86_64/mysql-wsrep-test-5.6-5.6.34-25.18.el7.x86_64.rpm
rpm -ivh galera-3-25.3.19-2.el7.x86_64.rpm
rpm -ivh mysql-wsrep-server-5.6-5.6.34-25.18.el7.x86_64.rpm
rpm -ivh mysql-wsrep-client-5.6-5.6.34-25.18.el7.x86_64.rpm
rpm -ivh mysql-wsrep-5.6-5.6.34-25.18.el7.x86_64.rpm
rpm -ivh mysql-wsrep-devel-5.6-5.6.34-25.18.el7.x86_64.rpm
rpm -ivh mysql-wsrep-shared-5.6-5.6.34-25.18.el7.x86_64.rpm
rpm -ivh mysql-wsrep-test-5.6-5.6.34-25.18.el7.x86_64.rpm

2.安装xtrabackup

rpm -Uvh https://www.percona.com/redir/downloads/percona-release/redhat/percona-release-0.1-4.noarch.rpm
yum install percona-xtrabackup -y
xtrabackup --version

3.设置开机启动mysql

chkconfig mysql on
service mysql start

4.设置mysql的root密码,并做安全加固

/usr/bin/mysql_secure_installation

5.创建用于同步数据库的SST帐号

[root@galera-cluster-mysql-27 ~]# mysql -uroot -p
mysql> grant all privileges on *.* to sst@'%' identified by '123456';
mysql> flush privileges;
mysql> quit;

6.创建wsrep.cnf文件

cp /usr/share/doc/mysql-wsrep-server-5.6-5.6.34/wsrep.cnf /etc/my.cnf.d/
vim /etc/my.cnf.d/wsrep.cnf

只需要修改以下四行:

wsrep_provider=/usr/lib64/galera-3/libgalera_smm.so
wsrep_cluster_name="haotion_wsrep_cluster"
wsrep_cluster_address="gcomm://"
wsrep_sst_method=xtrabackup
wsrep_sst_auth=sst:123456

注意:"gcomm://"是特殊的地址,仅仅是Galera cluster初始化启动时使用。如果集群启动以后,我们关闭了第一个节点,那么再次启动的时候必须先修改"gcomm://"为其他节点的集群地址,例如:wsrep_cluster_address="gcomm://192.168.7.29"

7.在/usr/my.cnf中加入如下一行

vim /usr/my.cnf

!includedir /etc/my.cnf.d/

8.重启mysql服务

service mysql restart

配置Galera cluster for MySQL

在Galera Cluster中,新接入的节点叫Joiner,给joiner提供复制的节点叫Donor。

image

对于生产环境使用,建议设立一个专用的"参考节点",这个"参考节点"不执行任何客户端的SQL请求。

image

上图中红色的NODE A即为"参考节点",这样做的好处有如下几条:

1.数据一致性:
因为"参考节点"本身不执行任何客户端SQL,所以在这个节点上发生transaction冲突的可能性最小。
因此如果发现集群有数据不一致的时候,"参考节点"上的数据应该是集群中最准确的。

2.数据安全性:
因为"参考节点"本身不执行任何客户端SQL,所以在这个节点上发生灾难事件的可能性最小。
因此当整个集群宕掉的时候,"参考节点"应该是恢复集群的最佳节点。

3.高可用:
"参考节点"可以作为专门state snapshot donor。
因为"参考节点"不服务于客户端,因此当使用此节点进行SST的时候,不会影响用户体验,并且前端的负载均衡设备也不需要重新配置。

构造如上图的结构,新节点的操作步骤如下:

  1. 按照上述1-8的步骤安装mysql和Galera library
  2. 除了第6步wsrep_cluster_address的配置稍有不同:wsrep_cluster_address="gcomm://Node-[A-N]-IP"
  3. 配置Node A重新加入集群,修改/etc/my.cnf.d/wsrep.cnf中的wsrep_cluster_address地址指向Node N。wsrep_cluster_address="gcomm://Node-N-IP:4567"
  4. 重启mysql服务
service mysql restart

查看集群心跳语句

mysql> show status like 'wsrep%';

注意(遇到的坑):集群启动失败解决方案

cd /var/lib/mysql
rm -f g*
echo ''>innobackup.backup.log
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!