PXC

PXC概述

1)PXC介绍

  • 是基于Galera的mysql高可用集群解决方案
  • Galera Cluster是Codership公司开发的一套免费开源的高可用方案
  • PXC集群主要由两部分组成:Percona Server with XtraDB和Write Set Replication patches(同步、多主复制插件)
  • 官网:galeracluster.com

2)特点

  • 数据强一致性、无同步延迟
  • 没有主从切换操作,无需使用虚拟IP
  • 支持InnoDB存储引擎
  • 多线程复制
  • 部署使用简单
  • 支持节点自动加入,无需手动拷贝数据

如何实现数据强一致性?
服务器执行客户端的SQL命令时,向集群发送广播,你们能不能执行这个命令?如果能,回复能,所有服务器都能时,所有服务器存储数据,如果有一台服务器回复不能,则不存储该数据,回复客户端存储失败

3)端口

端口 说明
3306 数据库服务端口
4444 SST端口
4567 集群通信端口
4568 IST端口
SST State Snapshot Transfer 全量同步
IST Incremental State Transfer 增量同步

部署PXC

本次案例:

主机名 IP地址 角色
pxc1 192.168.4.71 数据库服务器
pxc2 192.168.4.72 数据库服务器
pxc2 192.168.4.73 数据库服务器
  • 配置主机名与IP地址绑定:
[root@pxc1,pxc2,pxc3] vim /etc/hosts
192.168.4.71     pxc1
192.168.4.72     pxc2
192.168.4.73     pxc3
  • 安装软件包
[root@pxc1,pxc2,pxc3] rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
[root@pxc1,pxc2,pxc3] yum -y install percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm  #在线热备工具
[root@pxc1,pxc2,pxc3] rpm -ivh qpress-1.1-14.11.x86_64.rpm   #递归压缩工具
[root@pxc1,pxc2,pxc3] tar -xvf Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar -C .   #集群服务程序
[root@pxc1,pxc2,pxc3] 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集群配置文件
[root@pxc1,pxc2,pxc3] cd /etc/percona-xtradb-cluster.conf.d/
[root@pxc1,pxc2,pxc3] vim mysqld.cnf
[mysqld]
server-id=71     #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日志
log_slave_updates       #启用链式复制
expire_logs_days=7      #日志文件保留天数

[root@pxc1,pxc2,pxc3] vim mysqld_safe.cnf  #不需要改动
[mysqld_safe]
pid-file = /var/run/mysqld/mysqld.pid  #pid配置文件位置及名称
socket = /var/lib/mysql/mysql.sock  #socket文件位置及名称
nice = 0   #优先级

[root@pxc1,pxc2,pxc3] vim wsrep.cnf
wsrep_cluster_address=gcomm://192.168.4.71,192.168.4.72,192.168.4.73  #成员列表,所有服务器必须一样
wsrep_node_address=192.168.4.71  #本机ip
wsrep_cluster_name=pxc-cluster  #集群名称,所有服务器必须一样
wsrep_node_name=pxc1  #本机主机名
wsrep_sst_auth="sstuser:123qqq...A"   #sst数据同步用户名:密码, 所有服务器都一样
  • 启动服务

一台服务器上执行初始化即可,其余服务器启动时会同步该服务器的所有数据

初始化操作:

] systemctl start [email protected]  #启动集群服务
] grep root@ /var/log/mysqld.log  #查看初始密码
] mysql -uroot -p’W.HiOb8(ok)_’  #初始密码登录
mysql> alter user root@”localhost” identified by “123456”; #修改登录密码
mysql> grant reload,lock tables,replication client,process on *.*  to sstuser@"localhost” identified by “123qqq...A”; #添加授权用户

如果启动失败:

] vim /var/log/mysqld.log  #查看报错信息

其他服务器:

] systemctl start mysql  #启动数据库服务
  • 查看集群状态:
mysql> show status like '%wsrep%';   #查看集群状态,每台服务器都可以查看
wsrep_incoming_addresses 192.168.4.72:3306,192.168.4.73:3306,192.168.4.71:3306
#成员列表
wsrep_cluster_size    3     #集群服务器数量
wsrep_cluster_status  Primary    #集群状态
wsrep_connected       ON    #连接状态
wsrep_ready           ON    #服务状态
  • 测试集群功能:
  1. 在任意服务器上添加访问数据的授权用户
  2. 在客户端使用授权用户连接任意数据库服务器都可以存储数据,且可以查看到相同的数据
  3. 建表时,必须有主键字段

任何1台数据库服务器宕机都不影响用户存取数据,服务器运行以后,自动同步宕机期间数据,3台服务器同时损坏,集群崩溃

  • 停止服务:
执行了初始化的主机:
] systemctl stop [email protected]
再次启动时,需要用systemctl start mysql启动

没有执行初始化的主机:
] systemctl stop mysql
发布了81 篇原创文章 · 获赞 7 · 访问量 1196

猜你喜欢

转载自blog.csdn.net/weixin_45157506/article/details/103952938
PXC
今日推荐