pxc_cluster

PXC(Percona XtraDB Cluster)

是基于Galera的MySQL高可用集群解决方案

Galera Cluster是Codership公司开发的一套免费开源的高可用方案

PXC集群主要由两部分组成:Percona Server with XtraDB和Write Set Replication patches(同步、多主复制插件)

全主全备

PXC特点:

数据强一致性、无同步延迟

没有主从切换操作,无需使用虚拟IP

支持InnoDB存储引擎

多线程复制

部署使用简单

支持节点自动加入,无需手动拷贝数据

相应端口:

3306:数据库服务端口

4444:SST端口  

4567:集群通信端口

4568:IST端口

SST:State Snapshot Transfer 全量同步

IST:Incremental State Transfer 增量同步

实验环境:

三台全新的centos7,不要安装MySQL,关闭防火墙和selinux

pxc1:192.168.8.20

pxc2:192.168.8.21

pxc3:192.168.8.22

删除mariadb的依赖关系(三台都需要做)

rpm -e mariadb-libs --nodeps

修改主机名:

8.20:

[root@node13 ~]# hostnamectl set-hostname pxc1

[root@node13 ~]# bash

8.21:

[root@node13 ~]# hostnamectl set-hostname pxc2

[root@node13 ~]# bash

8.22:

[root@node13 ~]# hostnamectl set-hostname pxc3

[root@node13 ~]# bash

修改/etc/hosts文件

[root@pxc1 ~]# vim /etc/hosts

添加:

192.168.8.5    pxc1

192.168.8.6    pxc2

192.168.8.7    pxc3

将本机(8.20)的hosts文件拷贝到8.21,8.22的/etc目录下

[root@pxc1 ~]# scp /etc/hosts root@192.168.8.6:/etc

[root@pxc1 ~]# scp /etc/hosts root@192.168.8.7:/etc

在线安装

yum -y install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

yum -y install Percona-XtraDB-Cluster-57

systemctl start mysql

或者拖包安装pxc(三台都需要拖包)

创建安装目录

[root@pxc1 ~]# mkdir /pxc

[root@pxc1 ~]# cd /pxc/

pxc目录下的所有软件包

pxc1(8.20)安装pxc

[root@pxc1 pxc] # yum -y localinstall *.rpm

pxc2(8.21)上安装pxc

[root@pxc2 pxc] # yum -y localinstall *.rpm

pxc3(8.22)上安装pxc

[root@pxc3 pxc] # yum -y localinstall *.rpm

重启mysql服务(三台都需要重启服务)

[root@pxc1 pxc]# systemctl start mysqld

[root@pxc2 pxc]# systemctl start mysqld

[root@pxc3 pxc]# systemctl start mysqld

pxc1(8.20)查找与临时密码相关的日志条目

[root@pxc1 pxc]# grep 'temporary password' /var/log/mysqld.log

会生成一个临时密码

复制临时密码,使用 root 账户登录

[root@pxc1 pxc]# mysql -uroot -p

修改密码数据库密码为:123456

mysql> alter user 'root'@'localhost' identified by '123456';

退出服务

mysql> exit

复制代码之后使用以下命令停止 MySQL 服务:

[root@pxc1 pxc]# systemctl stop mysqld

pxc2(8.21)查找与临时密码相关的日志条目

[root@pxc2 pxc]# grep 'temporary password' /var/log/mysqld.log

复制临时密码,使用 root 账户登录

[root@pxc2 pxc]# mysql -uroot -p

修改密码

mysql> alter user 'root'@'localhost' identified by '123456';

退出服务

mysql> exit

复制代码之后使用以下命令停止 MySQL 服务:

[root@pxc2 pxc]# systemctl stop mysqld

pxc3(8.22)查找与临时密码相关的日志条目

[root@pxc3 pxc]# grep 'temporary password' /var/log/mysqld.log

复制临时密码,使用 root 账户登录

[root@pxc3 pxc]# mysql -uroot -p

修改密码

mysql> alter user 'root'@'localhost' identified by '123456';

退出服务

mysql> exit

复制代码之后使用以下命令停止 MySQL 服务:

[root@pxc3 pxc]# systemctl stop mysqld

以上安装过程在三台主机上均相同执行,之后就可以开始集群的搭建。

搭建集群

首先需要修改每台服务器上的 /etc/my.cnf 文件,第一个节点上(8.20)需要增加的内容如下:

[root@pxc1 pxc]# vim /etc/my.cnf

删除所有添加以下内容:

[mysqld]

server-id=1

wsrep_provider=/usr/lib64/galera3/libgalera_smm.so

wsrep_cluster_name=mysql1

wsrep_cluster_address=gcomm://192.168.8.5,192.168.8.6,192.168.8.7

wsrep_node_name=pxc1

wsrep_node_address=192.168.8.5

wsrep_sst_method=xtrabackup-v2

wsrep_sst_auth= sstuser:123456

pxc_strict_mode=ENFORCING

binlog_format=ROW

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2

修改第二个节点(8.21)的配置文件

[root@pxc2 pxc]# vim /etc/my.cnf

删除所有添加以下内容:

[mysqld]

server-id=2  

wsrep_provider=/usr/lib64/galera3/libgalera_smm.so

wsrep_cluster_name=mysql1

wsrep_cluster_address=gcomm://192.168.8.5,192.168.8.6,192.168.8.7

wsrep_node_name=pxc2

wsrep_node_address=192.168.8.6

wsrep_sst_method=xtrabackup-v2

wsrep_sst_auth= sstuser:123456

pxc_strict_mode=ENFORCING

binlog_format=ROW

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2

修改第三个节点(8.22)的配置文件

[root@pxc3 pxc]# vim /etc/my.cnf

删除所有添加以下内容:

[mysqld]

server-id=3  

wsrep_provider=/usr/lib64/galera3/libgalera_smm.so

wsrep_cluster_name=mysql1

wsrep_cluster_address=gcomm://192.168.8.5,192.168.8.6,192.168.8.7

wsrep_node_name=pxc3

wsrep_node_address=192.168.8.7

wsrep_sst_method=xtrabackup-v2

wsrep_sst_auth= sstuser:123456

pxc_strict_mode=ENFORCING

binlog_format=ROW

default_storage_engine=InnoDB

innodb_autoinc_lock_mode=2

启动集群

第一个节点(8.20)需要以引导模式启动:(注意:另外两台不用)

[root@pxc1 pxc]# systemctl start mysql@bootstrap.service

在将其他节点添加到群集之前,需要登录当前节点(8.20),来为 SST 操作创建用户并提供权限,命令如下

只在pxc1(8.20)上做,其他两个节点不需要

创建用户

[root@pxc1 pxc]# mysql -uroot -p

mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY '123456';

授予权限

mysql> grant reload, lock tables, process, replication client on *.* to 'sstuser'@'localhost';

mysql> flush privileges;

接着在第二和第三个节点上(8.21,8.22)正常启动数据库服务

[root@pxc2 pxc]# systemctl start mysqld

[root@pxc3 pxc]# systemctl start mysqld

启动后,可以登录任意节点并使用以下命令查看集群状态。输出中的 wsrep_cluster_size 的值应该为 3,即集群中节点总数为 3,此时代表所有节点都已成功加入集群,至此集群已经搭建完成。

mysql> show status like 'wsrep%';

pxc1(8.20)上创建数据库

mysql> show databases;

mysql> create database pxc1;

pxc2(8.21)上查看是否同步

mysql> show databases;

pxc3(8.22)上创建数据库

mysql> create database pxc3;

mysql> show databases;

pxc1(8.20)上查看是否同步

mysql> show databases;

节点下线

PXC 集群允许动态下线节点,但需要注意的是节点的启动命令和关闭命令必须一致,

如以引导模式启动的第一个节点必须以引导模式来进行关闭:

systemctl stop mysql@bootstrap.service

其他节点则可以按照正常方式关闭:

service stop mysql

关闭pxc1(8.20)的mysql服务

[root@pxc1 pxc]# systemctl stop mysql@bootstrap.service

在pxc2或pxc3上查看集群节点总数

mysql> show status like 'wsrep%';

在pxc2(8.21)上创建数据库

mysql> create database pxc2;

在pxc3(8.22)上查看是否同步

mysql> show databases;

将pxc1(8.20)的MySQL服务器重新启动

[root@pxc1 pxc]# systemctl start mysqld

pxc2(8.21)查看集群节点

mysql> show status like 'wsrep%';

当pxc1(8.20)的MySQL服务启动后,会自动加入群集中

在pxc1(8.20)上创建数据库

mysql> create database pxc4;

在pxc2(8.21)和pxc3(8.22)上查看是否同步

mysql> show databases;

可以同步

当把pxc1(8.20)的虚拟机关机之后,集群节点只显示2个节点

,重新开机之后pxc1(8.20)会自动接入集群中

参考资源链接:[PXC集群状态诊断:移除节点与正常状态对比](https://wenku.csdn.net/doc/3rn0tgbgtc?utm_source=wenku_answer2doc_content) 当PXC集群中的节点状态变量`wsrep_cluster_status`显示为`Disconnected`时,首先需要确定节点是由于网络故障、手动移除还是节点宕机导致的连接中断。为了深入分析这个问题,建议参考《PXC集群状态诊断:移除节点与正常状态对比》文档,该资料详细解释了核心状态变量的含义,并提供了在实际生产环境中集群运行状态的实例。 在检查`wsrep_cluster_status`之前,管理员应确认网络连接是否正常,检查网络配置和硬件是否存在问题。如果网络没有问题,接下来应查看`wsrep_cluster_size`,确认集群中的活跃节点数量是否正常。 查看其他状态变量,如`wsrep_cluster_state_uuid`和`wsrep_local_state_uuid`,这些变量可以帮助识别集群中的节点状态和位置。检查`wsrep_provider_name`和`wsrep_provider_version`以确认当前使用的PXC版本和提供的服务是否正常运行。`wsrep_protocol_version`将显示当前集群使用的复制协议版本,而`wsrep_last_applied`将显示最近应用的事务ID,这些信息对于进一步的故障排查非常有用。 如果`wsrep_cluster_status`为`Disconnected`,且其他状态变量也表明节点不再属于集群,那么管理员需要查看节点的错误日志以获取更详细的故障信息。可能需要检查Galera复制库的日志,了解节点为何从集群中脱离。 一旦问题原因被确认,管理员应采取相应的措施,如重启节点、修复网络问题或重新同步数据,以恢复节点和集群的健康状态。在处理完问题后,建议继续监控集群状态,确保集群能够稳定运行。此外,通过不断学习和实践《PXC集群状态诊断:移除节点与正常状态对比》文档中的知识,管理员能够提高处理类似问题的能力,确保PXC集群的高可用性和数据一致性。 参考资源链接:[PXC集群状态诊断:移除节点与正常状态对比](https://wenku.csdn.net/doc/3rn0tgbgtc?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值