一、概念
- 介绍:基于Galera的mysql高可用集群解决方案,PXC集群主要由两部分组成:percona server with xtradb 和 write set replication patches(同步、多主复制插件)
特点:
- 数据强一致性、无同步延迟;
- 没有主从切换操作,无需使用虚IP;
- 支持innodb存储引擎;
- 多线程复制;
- 部署使用简单;
- 支持节点自动加入,无需手动拷贝数据。
服务端口:
- 3306 数据库服务端口
- 4444 SST端口(state snapshot transfer 全量同步)
- 4567 集群成员通信端口
- 4568 IST端口(incremental state transfer 增量同步)
二、PXC环境搭建
三台服务器
pxcnode71 192.168.4.71 数据库服务器
pxcnode72 192.168.4.72 数据库服务器
pxcnode73 192.168.4.73 数据库服务器
同步/etc/hosts文件
192.168.4.71 pxcnode71
192.168.4.72 pxcnode72
192.168.4.73 pxcnode73
安装软件
软件介绍
percona-xtrabackup-24-2.4.13.1.el7.x86_64.rpm 在线热备程序
qpress-1.1-14.11.x86_64.rpm 递归压缩程序
percona-xtradb-cluster-server-57-5.7.25-31.35.1.el7.x86_64.rpm 集群服务程序
软件安装(pxcnode71-73)
rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
yum -y install percona-xtrabackup-24-2.4.13.1.el7.x86_64.rpm
rpm -ivh qpress-1.1-14.11.x86_64.rpm
tar -xf Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar
yum -y install Percona-XtraDB-Cluster-*.rpm
配置服务
相关配置文件
/etc/percona-xtradb-cluster.conf.d //所在目录
配置文件说明
mysqld.cnf //数据库服务运行参数配置文件
mysqld_safe.cnf //Percona Server 5.7 配置文件
wsrep.cnf //PXC集群配置文件
修改数据库服务运行参数配置文件
mysqld.cnf
[mysqld]
server-id=1 //server-id不允许重复
datadir=/var/lib/mysql //数据库目录
socket=/var/lib/mysql/mysql.sock //socket文件
log-error=/var/log/mysqld.log //日志文件
pid-file=/var/run/mysqld/mysqld.pid //pid文件
log-bin //启用binlog日志
logslaveupdates //启用链式复制
expirelogsdays=7 //日志文件保留天数
修改Percona Server 5.7 配置文件【默认无需修改】
[mysqld_safe]
pid-file=/var/run/mysqld/mysqld.pid //pid文件位置及名称
socket=/var/lib/mysql/mysql.sock //socket文件位置及名称
修改PXC集群配置文件
wsrep.cnf
wsrepclusteraddress=gcomm://192.168.4.71,192.168.4.72,192.168.4.73 //集群成员列表
wsrepnodeaddress=192.168.4.71 //本机ip地址
wsrepclustername=pxc_cluster //集群名称,三台必须相同
wsrepnodename=pxcnode71 //主机主机名
wsrepsstauth="sstuser:123456" //sst数据同步授权用户
启动服务
在1台上执行即可(192.168.4.71)
systemctl start [email protected] //启动集群服务
grep pass /var/log/mysqld.log //查看数据库管理员初始用户密码
mysql -uroot -p'上步查看到的密码'
alter user user() identified by "123456"; //修改用户密码(没有密码策略验证)
grant reload,lock tables, replication client, process on . to sstuser@"localhost" identified by "123456"; //添加授权用户
在其他两台服务器上运行
systemctl start mysql //启动数据库服务
ss -anptu | grep :3306 //所有机器上查看数据库服务端口
ss -anptu | grep :4567 //在所有机器上查看集群服务端口
三、测试PXC配置
> show status like "%wsrep%";
wsrep_incoming_addresses=192.168.4.71:3306,192.168.4.72:3306,192.168.4.73:3306 //成员列表
wrep_cluster_size=3 //集群服务器台数
wrep_cluster_status=Primary //当前集群状态
wrep_connected=on //连接状态
wrep_ready=on //集群状态
在任意一台上添加数据的授权用户,登录存储数据,建库建表,注意:建表时必须要有主键。
> grant all on *.* to tom@"%" identified by "123456";
mysql -h192.168.4.71 -utom -p123456 //访问集群
测试故障自动恢复:任何一台宕机都不影响用户存取数据,服务运行时自动同步宕机期间的数据。