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

目录

 搭建 PXC 集群

配置hosts解析

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

下载 PXC 安装包

启用PXC80版本

安装PXC集群

初始化数据库

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

查看临时密码

修改密码

免密登录

查询集群信息

查看证书

修改证书

查询集群信息

同步状态监控

节点2,3无需修改密码

节点下线


 搭建 PXC 集群

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

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

IP 端口 角色
192.168.1.51 3306 pxc
192.168.1.52 3306 pxc2
192.168.1.53 3306 pxc3

配置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

mysql8.0使用PXC实现高可用(Rocky8.0环境)_第1张图片

  • 用 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即可。

mysql8.0使用PXC实现高可用(Rocky8.0环境)_第2张图片

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

[root@pxc1 ~]# systemctl start [email protected]

查看临时密码

[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

mysql8.0使用PXC实现高可用(Rocky8.0环境)_第3张图片

查询集群信息

mysql> show status like 'wsrep%';

mysql8.0使用PXC实现高可用(Rocky8.0环境)_第4张图片

查看证书

#(第一个节点)
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)

mysql8.0使用PXC实现高可用(Rocky8.0环境)_第5张图片

同步状态监控

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 [email protected]

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

[root@localhost ~]# systemctl stop mysql

你可能感兴趣的:(openEuler,Linux,云原生高级,oracle,数据库,mysql,linux,openEurler,adb,Rocky8.0)