code学习

13.MySQL——PXC

13.MySQL——PXC

13.MySQL——PXC

  • ​​一、PXC概述​​
  • ​​1.1、介绍​​
  • ​​1.2、特点​​
  • ​​1.3、相应端口​​
  • ​​二、部署PXC​​
  • ​​2.1、安装软件​​
  • ​​2.2、修改服务器配置文件​​
  • ​​2.2.1、修改数据库服务运行参数配置文件​​
  • ​​2.2.2、修改PXC集群配置文件​​
  • ​​2.3、启动服务​​
  • ​​2.3.1、在pxcnode1主机做集群的初始配置​​
  • ​​2.3.2、在pxcnode2、3上启动服务​​
  • ​​2.3.3、在任意服务器上查看集群信息​​
  • ​​2.4、客户端访问集群存取数据​​

一、PXC概述

1.1、介绍

Percona XtraDB Cluster(PXC)

  • 1、是基于Galera的MySQL高可用集群解决方案
  • 2、Galera Cluster是Codership公司开发的一套免费开源的高可用方案
  • 3.、PXC集群主要由两部分组成

    Percona Server with XtarDB

    Write Replication patches

1.2、特点

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

    停止集群中的任意1台主机的数据服务

    客户端依然可以连接其他数据服务器查看和存数据

    把数据库服务启动后,会自动加入集群并并同步宕机期间的数据。

1.3、相应端口

  • 服务端口
端口 说明
3306 数据库服务端口
4444 SST端口
4567 集群通信端口
4568
  • SST

    State Snapshot Transfer 全量同步

  • IST

    Incremental State Transfer 增量同步

二、部署PXC

2.1、安装软件

  • 三台服务器
]# ls
libev-4.15-1.el6.rf.x86_64.rpm
percona-release-0.1-4.noarch.rpm
percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm    //在线热备程序
Percona-XtraDB-Cluster-57-5.7.25-31.35.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-57-debuginfo-5.7.25-31.35.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-client-57-5.7.25-31.35.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-devel-57-5.7.25-31.35.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-full-57-5.7.25-31.35.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-garbd-57-5.7.25-31.35.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-server-57-5.7.25-31.35.1.el7.x86_64.rpm    //集群服务程序
Percona-XtraDB-Cluster-shared-57-5.7.25-31.35.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-shared-compat-57-5.7.25-31.35.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-test-57-5.7.25-31.35.1.el7.x86_64.rpm
qpress-1.1-14.11.x86_64.rpm    //递归压缩程序

]# 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     //安装依赖
]# yum -y  install  Percona-XtraDB-Cluster-*.rpm

]# ls /etc/percona-xtradb-cluster.conf.d/    //配置文件所在目录      

2.2、修改服务器配置文件

  • 三台服务器
]# ls /etc/percona-xtradb-cluster.conf.d/    //配置文件所在目录
mysqld.cnf  mysqld_safe.cnf  wsrep.cnf      
  • wsrep.cnf

    PXC集群配置文件

  • mysqld.cnf

    数据库服务运行参数配置文件

[mysqld]
server-id=1    //不允许重复,默认是1
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  //日志文件保持的天数      
  • mysqld_safe.cnf

    Percona Server 5.7配置文件

2.2.1、修改数据库服务运行参数配置文件

[root@pxcnode1 ~]# vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
[mysqld]
server-id=1
[root@pxcnode2 ~]# vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
[mysqld]
server-id=2
[root@pxcnode3 ~]# vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
[mysqld]
server-id=3      

2.2.2、修改PXC集群配置文件

[root@pxcnode1 ~]# vim /etc/percona-xtradb-cluster.conf.d/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=pxc-cluster-node-71  //本机主机名
wsrep_sst_auth="sstuser:123qqq...A"  //SST数据同步授权用户

[root@pxcnode2 ~]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
wsrep_cluster_address=gcomm://192.168.4.71,192.168.4.72,192.168.4.73    
wsrep_node_address=192.168.4.72
wsrep_cluster_name=pxc-cluster  
wsrep_node_name=pxc-cluster-node-72
wsrep_sst_auth="sstuser:123qqq...A" 

[root@pxcnode3 ~]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
wsrep_cluster_address=gcomm://192.168.4.71,192.168.4.72,192.168.4.73    
wsrep_node_address=192.168.4.73
wsrep_cluster_name=pxc-cluster  
wsrep_node_name=pxc-cluster-node-73
wsrep_sst_auth="sstuser:123qqq...A"      

2.3、启动服务

2.3.1、在pxcnode1主机做集群的初始配置

[root@pxcnode1 ~]# systemctl start mysql@bootstrap.service  //启动集群配置
[root@pxcnode1 ~]# netstat -utnlp | grep 3306  
tcp6       0      0 :::3306                 :::*                    LISTEN      9154/mysqld         
[root@pxcnode1 ~]# netstat -utnlp | grep 4567
tcp        0      0 0.0.0.0:4567            0.0.0.0:*               LISTEN      9154/mysqld         
[root@pxcnode1 ~]# grep password /var/log/mysqld.log 
2020-03-30T07:54:32.690202Z 1 [Note] A temporary password is generated for root@localhost: R>3#h*jPey(l
[root@pxcnode1 ~]# mysql -uroot -p'R>3#h*jPey(l'      
mysql> alter user root@"localhost" identified by "123456";
Query OK, 0 rows affected (0.00 sec)

mysql> show databases;

mysql> grant reload , lock tables , replication client , process on *.* to sstuser@"localhost" identified by  "123qqq...A";      

2.3.2、在pxcnode2、3上启动服务

[root@pxcnode2 ~]# systemctl start mysql
[root@pxcnode2 ~]# netstat  -utnlp  | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      8914/mysqld         
[root@pxcnode2 ~]# netstat  -utnlp  | grep 4567
tcp        0      0 0.0.0.0:4567            0.0.0.0:*               LISTEN      8914/mysqld
[root@pxcnode2 ~]# mysql -uroot -p123456

[root@pxcnode3 ~]# systemctl start mysql
[root@pxcnode3 ~]# netstat  -utnlp | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      10998/mysqld        
[root@pxcnode3 ~]# netstat  -utnlp | grep 4567
tcp        0      0 0.0.0.0:4567            0.0.0.0:*               LISTEN      10998/mysqld        
[root@pxcnode3 ~]# mysql -uroot -p123456      

2.3.3、在任意服务器上查看集群信息

mysql> show status like "%wsrep_%";
wsrep_incoming_addresses         | 192.168.4.73:3306,192.168.4.71:3306,192.168.4.72:3306  //成员列表
wsrep_cluster_size               | 3      //集群服务器台数
wsrep_cluster_status             | Primary    //集群状态
wsrep_connected                  | ON      //连接状态
wsrep_ready                      | ON      //服务状态      

2.4、客户端访问集群存取数据

  1. 在任意一台数据库服务器上添加授权 用户

    先创建库表

mysql> create database mydb1;
Query OK, 1 row affected (0.01 sec)

mysql> create table mydb1.user(id int primary key auto_increment , name char(10) );
Query OK, 0 rows affected (0.01 sec)

mysql> grant select , insert on mydb1.* to abc@"%" identified by "123456";
Query OK, 0 rows affected, 1 warning (0.01      
  1. 客户端连接测试
[root@client ~]# mysql -h192.168.4.71 -uabc -p123456
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb1              |
+--------------------+
2 rows in set (0.00 sec)


[root@client ~]# mysql -h192.168.4.72 -uabc -p123456
mysql> show databases;

[root@client ~]# mysql -h192.168.4.73 -uabc -p123456