mysql8.0使用PXC实现高可用

一、概述 

PXC:

PXC 是一套 MySQL 高可用集群解决方案,与传统的基于主从复制模式的集群架构相比 PXC 最突出特点就是解决了诟病已久的数据复制延迟问题,基本上可以达到实时同步。而且节点与节点之间,他们相互的关系是对等的。PXC 最关注的是数据的一致性,对待事物的行为时,要么在所有节点上执行,要么都不执行,它的实现机制决定了它对待一致性的行为非常严格,这也能非常完美的保证 MySQL 集群的数据一致性;

PXC 常用端口:

  • 3306:数据库对外服务的端口号。

  • 4444:请求 SST 的端口。

  • 4567:组成员之间进行沟通的一个端口号。

  • 4568:用于传输 IST。

二、搭建PXC 集群

1、环境部署

准备好下面三台服务器(基于CentOS7.x):

IP端口角色
192.168.8.1433306pxc1
192.168.8.1463306pxc2
192.168.8.1473306pxc3

所有服务器 都配置hosts解析

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

192.168.8.143 pxc1
192.168.8.146 pxc2
192.168.8.147 pxc3

删除 MariaDB 程序包

[root@all ~]#  yum -y remove mari*

2、 下载PXC安装包

[root@all ~]#  yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm  -y
[root@all ~]# percona-release setup pxc-80
[root@all ~]# yum install percona-xtradb-cluster  -y

3、修改临时密码

三台服务器:

[root@all ~]# systemctl start mysqld

[root@all ~]# grep 'temporary password' /var/log/mysqld.log

2025-02-10T09:25:11.848736Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: &&-=sZnJl4cu


[root@all ~]# mysql -u root -p‘&&-=sZnJl4cu’

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

mysql> \q

[root@all ~]# systemctl stop mysqld

4、初始化数据库并创建集群  

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

[mysqld]
server-id=143          #每台mysql的id不能相同

wsrep_cluster_address=gcomm://192.168.8.143,192.168.8.146,192.168.8.147  # PXC集群的所有ip 

wsrep_node_address=192.168.8.143          # 当前节点的IP

wsrep_node_name=pxc1            #当前节点的名称

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

server-id=146

wsrep_cluster_address=gcomm://192.168.8.143,192.168.8.146,192.168.8.147

wsrep_node_address=192.168.8.146

wsrep_node_name=pxc2

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

server-id=147

wsrep_cluster_address=gcomm://192.168.8.143,192.168.8.146,192.168.8.147

wsrep_node_address=192.168.8.147

wsrep_node_name=pxc3

5、 将引导服务mysql目录下的*.pem拷贝给其他服务器

[root@pxc2 ~]# cd /var/lib/mysql/

[root@pxc2 mysql]# rm -f *.pem
[root@pxc3 mysql]# rm -f *.pem

[root@pxc1 ~]# scp /var/lib/mysql/*.pem pxc2:/var/lib/mysql/
[root@pxc1 ~]# scp /var/lib/mysql/*.pem pxc3:/var/lib/mysql/

 6、第一个节点需要以引导模式启动,二三节点上正常启动数据库服务

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

[root@pxc2 ~]# chown -R mysql.mysql /var/lib/mysql/
[root@pxc2 ~]# systemctl start mysqld
[root@pxc3 ~]# chown -R mysql.mysql /var/lib/mysql/
[root@pxc3 ~]# systemctl start mysqld

如果PXC某个节点出现异常,可能是因为集群节点间秘钥和证书文件不一致加入集群失败。默认情况下,系统变量pxc encrypt_clusler_traffic设置为ON,意味着所有集群流量都使用证书进行保护,所以要求所有节点使用相同的密钥和证书文件,systemcl start mysql启动初始话过程中生成默认密钥和证书文件,并将其放在datadir数据目录下,这就造成故障节点和其他节点密钥和证书文件不一致,因此需要将故障节点的".pem全部制除,并将某一个
正常节点数据目录下的*.pem文件全部复制到故障节点。

7、查看集群信息

[root@pxc1 ~]# mysql -uroot -p123456 -e "show status like 'wsrep_cluster%';"

[root@pxc1 ~]# mysql -uroot -p123456 -e "show status like 'wsrep_incoming_addresses';" 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值