当前位置: 代码网 > it编程>数据库>Mysql > mysql8.0使用PXC实现高可用的示例(Rocky8.0环境)

mysql8.0使用PXC实现高可用的示例(Rocky8.0环境)

2025年02月17日 Mysql 我要评论
搭建 pxc 集群percona xtradb cluster (简称 pxc)集群是基于 galera 2.x library,事务型应用下的通用的多主同步复制插件,主要用于解决强一致性问题,使得各

搭建 pxc 集群

percona xtradb cluster (简称 pxc)集群是基于 galera 2.x library,事务型应用下的通用的多主同步复制插件,主要用于解决强一致性问题,使得各个节点之间的数据保持实时同步以及实现多节点同时读写。提高了数据库的可靠性,也可以实现读写分离,是 mysql 关系型数据库中大家公认的集群优选方案之一。

准备好下面三台服务器,本文搭建pxc集群基于rocky8.0环境:

ip端口角色
192.168.1.513306pxc
192.168.1.523306pxc2
192.168.1.533306pxc3

配置hosts解析

[root@localhost ~]# vim /etc/hosts +
192.168.1.51 pxc1
192.168.1.52 pxc2
192.168.1.53 pxc3


或:
# cat >> /etc/hosts << eof
192.168.1.51 pxc1
192.168.1.52 pxc2
192.168.1.53 pxc3
eof

用 mysql 软件模块的命令(三台都需要)

[root@localhost ~]# yum module disable mysql

下载 pxc 安装包

[root@localhost ~]# yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

启用pxc80版本

[root@localhost ~]# percona-release setup pxc-80

安装pxc集群

[root@localhost ~]# yum install percona-xtradb-cluster

之后还是对 percona server 数据库的初始化:

初始化数据库

应为使用的是8.0版本,部分配置需要在初始化数据库前进行配置,如忽略表名大小写等

[root@pxc1 ~]# vim /etc/my.cnf
...
[mysqld]
server-id=51 #每台mysql的id不能相同

# binary log expiration period is 604800 seconds, which equals 7 days
binlog_expire_logs_seconds=604800 #二进制日志过期时间为604800秒,等于7天


wsrep_cluster_address=gcomm://192.168.1.51,192.168.1.52,192.168.1.53  #都需要

wsrep_node_address=192.168.1.51   #将#去掉,改成对应ip

wsrep_node_name=pxc1  #集群名字


注意:pxc2和pxc3只需要server-id设置为52和53,集群名字改为pxc2和3即可。

第一个节点需要以引导模式启动:

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

查看临时密码

[root@localhost ~]# grep -i password /var/log/mysqld.log
2025-02-13t13:20:31.423023z 6 [note] [my-010454] [server] a temporary password is generated for root@localhost: ksn&iycog4dq

修改密码

[root@localhost ~]# mysql -uroot -p'ksn&iycog4dq'

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

免密登录

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

user=root
password=mysql@123

查询集群信息

mysql> show status like 'wsrep%';

查看证书

#(第一个节点)
mysql> show variables like 'pxc_encrypt_cluster_traffic';  
+-----------------------------+-------+
| variable_name               | value |
+-----------------------------+-------+
| pxc_encrypt_cluster_traffic | on    |
+-----------------------------+-------+
1 row in set (0.05 sec)


[root@localhost ~]# cd /var/lib/mysql
[root@localhost mysql]# ll *.pem
-rw------- 1 mysql mysql 1680 feb 13 21:54 ca-key.pem
-rw-r--r-- 1 mysql mysql 1120 feb 13 21:54 ca.pem
-rw-r--r-- 1 mysql mysql 1120 feb 13 21:54 client-cert.pem
-rw------- 1 mysql mysql 1680 feb 13 21:54 client-key.pem
-rw------- 1 mysql mysql 1676 feb 13 21:54 private_key.pem
-rw-r--r-- 1 mysql mysql  452 feb 13 21:54 public_key.pem
-rw-r--r-- 1 mysql mysql 1120 feb 13 21:54 server-cert.pem
-rw------- 1 mysql mysql 1680 feb 13 21:54 server-key.pem

修改证书

将第一个节点的证书复制到第2个和第3个节点上面

#第2,3节点先删除证书
[root@localhost ~]# cd /var/lib/mysql
[root@localhost mysql]# rm -f *.pem

#在第1节点进行拷贝
[root@localhost ~]# scp /var/lib/mysql/*.pem pxc2:/var/lib/mysql
the authenticity of host 'pxc2 (192.168.1.52)' can't be established.
ecdsa key fingerprint is sha256:5hjl01eqj2nry7dtjvtglq+ghvziz54afei4awcuc3e.
are you sure you want to continue connecting (yes/no/[fingerprint])? yes  #需要输入
warning: permanently added 'pxc2,192.168.1.52' (ecdsa) to the list of known hos
root@pxc2's password:          #需要输入pxc2,192.168.1.52的开机密码(root)
ca-key.pem                                   100% 1680   942.8kb/s   00:00
ca.pem                                       100% 1120   807.8kb/s   00:00
client-cert.pem                              100% 1120     1.5mb/s   00:00
client-key.pem                               100% 1676     1.1mb/s   00:00
private_key.pem                              100% 1680     1.8mb/s   00:00
public_key.pem                               100%  452   908.5kb/s   00:00
server-cert.pem                              100% 1120     2.1mb/s   00:00
server-key.pem                               100% 1680     1.7mb/s   00:00

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


#再在第2,3节点上修改证书权限
[root@localhost mysql]# chown mysql.mysql *.pem

接着在第二和第三个节点上正常启动数据库服务,命令如下:

[root@pxc2 ~]# systemctl start mysql

[root@pxc3 ~]# systemctl start mysql

查询集群信息

mysql> show status like 'wsrep%';

或:

mysql> show status where variable_name in ('wsrep_cluster_size','wsrep_cluster_status','wsrep_connected','wsrep_ready');
+----------------------+---------+
| variable_name        | value   |
+----------------------+---------+
| wsrep_cluster_size   | 3       |
| wsrep_cluster_status | primary |
| wsrep_connected      | on      |
| wsrep_ready          | on      |
+----------------------+---------+
4 rows in set (0.03 sec)

同步状态监控

mysql> select * from performance_schema.pxc_cluster_view;
+-----------+--------------------------------------+--------+-------------+---------+
| host_name | uuid                                 | status | local_index | segment |
+-----------+--------------------------------------+--------+-------------+---------+
| pxc1      | 4fdd3348-ea0d-11ef-8eec-ce7af56f28c3 | synced |           0 |       0 |
| pxc2      | cf90d45e-ea15-11ef-9521-72c20777f912 | synced |           1 |       0 |
| pxc3      | d608c0e9-ea15-11ef-a5fa-42a90e6cebce | synced |           2 |       0 |
+-----------+--------------------------------------+--------+-------------+---------+
3 rows in set (0.00 sec)

节点2,3无需修改密码

加入集群用的就是节点1的密码

查看 pxc 集群状态信息,在任意一个节点执行以下命令:

[root@pxc1 ~]# mysql -uroot -p'mysql@123' -e "show status like 'wsrep_cluster%';"
mysql: [warning] using a password on the command line interface can be insecure.
+----------------------------+--------------------------------------+
| variable_name              | value                                |
+----------------------------+--------------------------------------+
| wsrep_cluster_weight       | 3                                    |
| wsrep_cluster_capabilities |                                      |
| wsrep_cluster_conf_id      | 3                                    |
| wsrep_cluster_size         | 3                                    |
| wsrep_cluster_state_uuid   | 47f68dce-940c-11ee-85d5-c29e7cbcc6e4 |
| wsrep_cluster_status       | primary                              |
+----------------------------+--------------------------------------+

节点下线

pxc 集群允许动态下线节点,但需要注意的是节点的启动命令和关闭命令必须一致,如以引导模式启动的第一个节点必须

以引导模式来进行关闭:

[root@localhost ~]# systemctl stop mysql@bootstrap.service

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

[root@localhost ~]# systemctl stop mysql

 到此这篇关于mysql8.0使用pxc实现高可用的示例(rocky8.0环境)的文章就介绍到这了,更多相关mysql8.0 pxc高可用内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com