一、概念

  1. 介绍:基于Galera的mysql高可用集群解决方案,PXC集群主要由两部分组成:percona server with xtradb 和 write set replication patches(同步、多主复制插件)
  2. 特点:

    1. 数据强一致性、无同步延迟;
    2. 没有主从切换操作,无需使用虚IP;
    3. 支持innodb存储引擎;
    4. 多线程复制;
    5. 部署使用简单;
    6. 支持节点自动加入,无需手动拷贝数据。
  3. 服务端口:

    1. 3306 数据库服务端口
    2. 4444 SST端口(state snapshot transfer 全量同步)
    3. 4567 集群成员通信端口
    4. 4568 IST端口(incremental state transfer 增量同步)

二、PXC环境搭建

  1. 三台服务器

    pxcnode71 192.168.4.71 数据库服务器 pxcnode72 192.168.4.72 数据库服务器pxcnode73 192.168.4.73 数据库服务器

  2. 同步/etc/hosts文件

    192.168.4.71 pxcnode71 192.168.4.72 pxcnode72 192.168.4.73 pxcnode73

  3. 安装软件

    1. 软件介绍

      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 集群服务程序

    2. 软件安装(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

  4. 配置服务

    1. 相关配置文件

      /etc/percona-xtradb-cluster.conf.d //所在目录

    2. 配置文件说明

      mysqld.cnf //数据库服务运行参数配置文件

      mysqld_safe.cnf //Percona Server 5.7 配置文件

      wsrep.cnf //PXC集群配置文件

    3. 修改数据库服务运行参数配置文件

      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 //日志文件保留天数

    4. 修改Percona Server 5.7 配置文件【默认无需修改】

      [mysqld_safe]

      pid-file=/var/run/mysqld/mysqld.pid //pid文件位置及名称

      socket=/var/lib/mysql/mysql.sock //socket文件位置及名称

    5. 修改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数据同步授权用户

  5. 启动服务

    1. 在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"; //添加授权用户

    2. 在其他两台服务器上运行

      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 //访问集群

测试故障自动恢复:任何一台宕机都不影响用户存取数据,服务运行时自动同步宕机期间的数据

07-14 21:10