MySQL——PXC

一、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 IST端口
  • 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 s
  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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章