PXC集群

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

1.1.2 PXC特点
• 具体如下
- 数据强一致性,无同步延迟
- 没有主从切换操作,无需使用虚拟IP
- 支持innodb存储引擎
- 多线程复制
- 部署使用简单
- 支持节点自动加入,无需手动拷贝数据
1.1.3 相应端口
PXC集群_第1张图片
1.2 配置pxc集群 (192.168.4.71/72/73)
1.2.1 主机名绑定

  [root@pxcnode71 ~]# vim /etc/hosts
	192.168.4.71  pxcnode71
	192.168.4.72  pxcnode72
	192.168.4.73  pxcnode73
:wq

1.2.2 安装PXC软件(三台服务器分别安装)

[student@room9pc01 ~]$ scp -r /linux-soft/03/PXC [email protected]:/root
[root@pxcnode72 ~]# cd  PXC/
[root@pxcnode72 PXC]# yum -y install libev-4.15-1.el6.rf.x86_64.rpm 
[root@pxcnode72 PXC]# yum -y install percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm 
[root@pxcnode72 PXC]# yum -y install qpress-1.1-14.11.x86_64.rpm 
[root@pxcnode72 PXC]# tar -xf Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar 
[root@pxcnode72 PXC]# yum -y install Percona-XtraDB-Cluster-*.rpm

1.2.3 修改PXC集群配置文件 (三台服务器分别修改)

[root@pxcnode71 ~]# ls /etc/percona-xtradb-cluster.conf.d/
	 mysqld.cnf       		# 数据库服务运行参数配置文件 
	 mysqld_safe.cnf 		# percona server 5.7配置文件(使用默认配置即可)
	 wsrep.cnf				# PXC集群配置文件

[root@pxcnode71 ~]# vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf 
	[mysqld]
	server-id=71		# server_id 不允许重复
:wq
[root@pxcnode71 ~]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
	wsrep_cluster_address=gcomm://192.168.4.72,192.168.4.73,192.168.4.71  	#集群成员列表
	wsrep_node_address=192.168.4.71							#本机Ip地址
	wsrep_cluster_name=pxc-cluster							#集群名称,三台必须相同
	wsrep_node_name=pxcnode71								#本机主机名
	wsrep_sst_auth="sstuser:123qqq...A"						#SST数据同步授权用户

1.2.4 启动服务(在任意一台主机执行即可)

[root@pxcnode71 ~]# systemctl start [email protected]
[root@pxcnode71 ~]# netstat -ntlup | grep :3306
[root@pxcnode71 ~]# netstat -ntlup | grep :4567
[root@pxcnode71 ~]# grep password /var/log/mysqld.log
[root@pxcnode71 ~]# mysql -uroot -p"q_5xPy8gARng"
mysql> alter user user() identified by "123qqq...A";
mysql> grant reload,lock tables,replication client,process on *.* to sstuser@"localhost" identified by "123qqq...A"

1.2.5 其他二台服务器上执行
- 启动数据库服务
- 会自动同步71主机的授权用户及管理员root的密码

[root@pxcnode72 ~]# systemctl start mysql
[root@pxcnode72 ~]# netstat -ntlup | grep :3306
[root@pxcnode72 ~]# netstat -ntlup | grep :4567
[root@pxcnode72 ~]# mysql -uroot -p123qqq...A
mysql> select user,host from mysql.user;

1.3 测试配置
1.3.1 查看集群信息(可在任意一台数据库服务器上执行)
- 执行sql命令 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  

1.3.2 测试集群功能
- 在任意一台服务器上添加访问数据的授权用户
- 在客户端使用授权用户连接任意数据库服务器都可以存储数据,且可以查看到同样的数据
- 建表时,必须有主键字段

mysql> grant all on gamedb.* to admin@"%" identified by "123qqq...A";

[root@mysql50 ~]# mysql -h192.168.4.72/71/73 -uadmin -p123qqq...A	 #访问集群
mysql> show grants ;
mysql> create database gamedb;
mysql> show databases;
mysql> create table gamedb.stuinfo(id int primary key auto_increment,name char(15),
		age tinyint unsigned,class char(9));
mysql> desc gamedb.stuinfo;
mysql> insert into gamedb.stuinfo (name,age,class) values ("bobo",19,"nds1906"); 
mysql> insert into gamedb.stuinfo (name,age,class) values ("jerry",20,"nds1906");
mysql> insert into gamedb.stuinfo (name,age,class) values ("iboy",19,"nds1906"); 
mysql> select * from gamedb.stuinfo ;

[root@pxcnode73 ~]# mysql -uroot -p123qqq...A
mysql> select * from gamedb.stuinfo ;

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

[root@pxcnode72 ~]# systemctl stop mysql
[root@pxcnode72 ~]# netstat -ntlup | grep :4567
[root@pxcnode72 ~]# netstat -ntlup | grep :3306

[root@mysql50 ~]# mysql -h192.168.4.73 -uadmin -p123qqq...A
mysql> insert into gamedb.stuinfo (name,age,class) values ("john",20,"nds1906");
mysql> insert into gamedb.stuinfo (name,age,class) values ("jiejie",20,"nds1906");
mysql> insert into gamedb.stuinfo (name,age,class) values ("make",20,"nds1906"); 
mysql> select * from gamedb.stuinfo ;

[root@pxcnode72 ~]# systemctl restart mysql
mysql> select * from gamedb.stuinfo ;

你可能感兴趣的:(PXC集群)