PXC集群搭建
概念
- Percona XtraDB Cluster(简称PXC)
- 是基于Galera的mysql高可用集群解决方案
- Galera Cluster是Codership公司开发的一套免费开源的高可用方案
- PXC集群主要有两部分组成:Percona Server with XtraDB和Write Set Replication patches(同步,多主复制插件)
- 官网http://galeracluster.com
特点
1.具体如下:
-数据强一致性,无同步延迟
-没有主从切换操作,无需使用虚拟IP
-支持InnoDB存储引擎
-多线程复制
-部署使用简单
-支持节点自动介入,无需手动拷贝数据
2.相应端口:
端口 | 说明 |
---|---|
3306 | 数据库服务端口 |
4444 | SST端口 |
4567 | 集群通信端口 |
4568 | IST端口 |
SST | State Snapshot Transfer 全量同步 |
IST | Incremental State Transfer 增量同步 |
3.相较MHA集群相比,MHA集群的缺陷:
- 管理服务监控到主服务器宕机服务会自动停止
- 宕机的服务器再添加到集群里,要手动配置主从及同步数据
- 客户端连接访问的是VIP地址
- 用来搭建集群的服务器必须是主从结构
- 要配置ssh无密码登陆
安装
1.安装包
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 -xvf Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar
yum -y install Percona-XtraDB-Cluster-*.rpm
2.环境配置
2.1 相关配置文件
- /etc/percona-xtradb-cluster.conf.d //所在目录
- mysqld.conf //数据库服务运行参数配置文件
- mysqld_safe.cnf //Percona Server 5.7配置文件
- wsrep.cnf //PXC集群配置文件
2.2 修改mysqld.cnf文件
[mysqld]
server-id=* //给个id号,建议与本机ip一致
!注意!三台数据库服务器的server-id 不允许重复
2.3 修改wsrep.cnf文件
vim wsrep.cnf //配置集群文件
8 wsrep_cluster_address=gcomm://192.168.4.71,192.168.4.72,192.168.4.73(注意自己的IP在最后一个) //集群成员列表
25 wsrep_node_address=192.168.4.72\ //本机ip地址
27 wsrep_cluster_name=pxc-cluster //集群名称,3台必须相同
30 wsrep_node_name=pxcnode72 //本机主机名
39 wsrep_sst_auth="sstuser:123qqq...A" //SST完全备份数据同步授权用户的账号和密码
三台机器上同步以上操作,完成基础环境配置.
3.启动集群服务
在第一台服务器上启动集群服务,在另外两台服务器上启动数据库服务.
]# systemctl start [email protected] //启动集群服务
]# grep password /var/log/mysqld.log //查看数据库管理员初始登录密码
]# mysql -uroot -p'ZcKy8gYT&Ul>' //登录
mysql> alter user root@"localhost" identified by "123456"; //修改登录密码
mysql> grant reload , lock tables , replication client , process on *.* to sstuser@"localhost" identified by "123456"; //添加授权
4.启动数据库服务
在第一台服务器上启动集群服务,在另外两台服务器上启动数据库服务.
systemctl start mysql //启动数据库服务
ss -ntulp | grep 3306 //查看端口
ss -ntulp | grep 4567 //查看端口
5.测试配置
5.1 查看集群信息
mysql>show status like "%wsrep%";
5.2 在任意数据库服务器添加授权用户
mysql> grant all on 库名.* to 用户@"%" identified by "密码";
]# mysql -h服务器ip地址 -u用户名 -p密码 //访问集群
5.3 客户端连接任意数据库服务器访问数据
扩展—搭建负载均衡集群
环境准备:
新增一台虚拟机(192.168.4.9),安装haproxy包
修改配置文件/etc/haproxy/haproxy.cfg
-删除注释行
-删除31行以下全部
-新增代码
listen mysql_3306 192.168.4.9:3306
mode tcp
option tcpka //
balance roundrobin //轮询调度算法
server mysql_01 192.168.4.71:3306 check
server mysql_02 192.168.4.72:3306 check
server mysql_03 192.168.4.73:3306 check
重启服务
systemctl start haproxy
客户端访问192.168.4.9这台机器,测试结果
mysql -h192.168.4.9 -uadmin -p123456 -e "select @@hostname"
mysql -h192.168.4.9 -uadmin -p123456 -e "select @@hostname"
mysql -h192.168.4.9 -uadmin -p123456 -e "select @@hostname"