从零构建高可用MySQL集群:Percona XtraDB Cluster 实战部署

ops/2025/2/12 5:08:35/

实战指南:基于Percona XtraDB Cluster 构建高可用 MySQL 集群架构

引言:为什么选择PXC?

Percona XtraDB Cluster(PXC)是基于Galera协议的MySQL高可用解决方案,提供同步多主复制、数据强一致性等关键特性,特别适合需要高可用性和数据完整性的金融、电商等场景。


一、环境规划与准备工作

1.1 集群拓扑设计
主机IP(CentOS 7.x)节点角色
172.25.254.11pxc1
172.25.254.12pxc2
172.25.254.13pxc3

架构原理:PXC采用多主架构,所有节点均可读写,通过Galera Cluster实现事务的同步复制(certification-based replication)

1.2 基础环境配置
# 所有节点执行
hostnamectl set-hostname pxc[1-3]
echo "172.25.254.11 pxc1
172.25.254.12 pxc2
172.25.254.13 pxc3" >> /etc/hosts# 验证网络互通
ping -c 4 pxc2 && ping -c 4 pxc3# 所有节点执行
bash

二、高效部署方案

2.1 下载官方RPM(不推荐)

下载地址: https://www.percona.com/downloads

# 依赖包示例(需安装大量依赖项)
audit-libs-python.x86_64 0:2.8.5-4.el7
checkpolicy.x86_64 0:2.5-8.el7
libev.x86_64 0:4.15-7.el7
libsemanage-python.x86_64 0:2.5-14.el7
percona-xtradb-cluster-client.x86_64 0:8.0.37-29.1.el7
percona-xtradb-cluster-icu-data-files.x86_64 0:8.0.37-29.1.el7
perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7
perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7
perl-DBD-MySQL.x86_64 0:4.023-6.el7
perl-DBI.x86_64 0:1.627-4.el7
perl-Data-Dumper.x86_64 0:2.145-3.el7
perl-IO-Compress.noarch 0:2.061-2.el7
perl-Net-Daemon.noarch 0:0.48-5.el7
perl-PlRPC.noarch 0:0.2020-14.el7
policycoreutils-python.x86_64 0:2.5-34.el7
python-IPy.noarch 0:0.75-6.el7
qpress.x86_64 0:11-3.el7
setools-libs.x86_64 0:3.3.8-4.el7

缺点:依赖复杂、版本冲突风险高

2.2 官方仓库部署(推荐)

官方文档:https://docs.percona.com/percona-xtradb-cluster/8.0/yum.html#install-from-percona-software-repository

# 删除 MariaDB 程序包
yum -y remove mari*# 禁用系统默认MySQL模块
yum module disable mysql -y# 安装Percona官方仓库
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm -y
percona-release setup pxc-80# 安装PXC核心组件(包含Galera库,速度较慢)
yum install percona-xtradb-cluster -y

优势:自动解决依赖、保持版本一致性、支持后续升级


三、集群初始化与配置

3.1 核心配置文件
# /etc/my.cnf 关键参数说明
[mysqld]
# 必须全局唯一
server-id = 1  
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock# Galera配置段
wsrep_provider=/usr/lib64/galera4/libgalera_smm.so
# PXC集群的名称
wsrep_cluster_name=pxc_cluster
# PXC集群的所有IP
wsrep_cluster_address=gcomm://172.25.254.11,172.25.254.12,172.25.254.13
# 当前节点IP
wsrep_node_address=172.25.254.11
# 当前节点名称
wsrep_node_name=pxc1
# 同步方法
wsrep_sst_method=xtrabackup-v2

四、集群启动与验证

4.1 引导节点初始化
# 首个节点启动(注意必须带bootstrap参数)
systemctl start mysql@bootstrap.service# 获取临时密码
grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}'# 修改密码策略(先登录,密码随意,符合MySQL密码策略即可)
alter user root@localhost identified by 'MySQL@?';
4.2 集群扩展
# 证书同步(保障节点间安全通信)
scp -rp /var/lib/mysql/*.pem pxc2:/var/lib/mysql/
scp -rp /var/lib/mysql/*.pem pxc3:/var/lib/mysql/
chown -R mysql:mysql /var/lib/mysql/# 启动后续节点前检查
systemctl status firewalld  # 必须关闭防火墙
getenforce  # 应为Disabled# 查看集群状态(重点指标)
mysql> SHOW STATUS LIKE 'wsrep%';
# 留意以下信息
| wsrep_incoming_addresses         | 172.25.254.11:3306
| wsrep_cluster_size               | 1
| wsrep_cluster_status             | Primary
| wsrep_connected                  | ON
| wsrep_ready                      | ON# 启动后续节点
systemctl start mysqld
# 在引导节点观察集群状态
mysql> SHOW STATUS LIKE 'wsrep_cluster_size';# 加入完毕后,在任意节点观察集群状态
mysql> show status like 'wsrep_cluster%';
+----------------------------+--------------------------------------+
| Variable_name              | Value                                |
+----------------------------+--------------------------------------+
| wsrep_cluster_weight       | 3                                    |
| wsrep_cluster_capabilities |                                      |
| wsrep_cluster_conf_id      | 3                                    |
| wsrep_cluster_size         | 3                                    |
| wsrep_cluster_state_uuid   | 5b679b77-e7d1-11ef-bfb5-7a1208e170bc |
| wsrep_cluster_status       | Primary                              |
+----------------------------+--------------------------------------+

五、安全下线流程

# 普通节点下线
systemctl stop mysqld# 引导节点下线
systemctl stop mysql@bootstrap.service

http://www.ppmy.cn/ops/157697.html

相关文章

光伏设计软件分类:无人机、Unity3D引擎齐上阵

无人机3D设计 无人机可搭载高分辨率光学相机、激光雷达等测绘设备,对目标区域进行全方位、多角度的航拍作业。通过对采集到的影像数据进行导入处理,运用复杂的图像识别算法与三维重建技术,构建出云端实景3D模型,在实景3D模型中进…

Linux:线程的互斥与同步

一、买票的线程安全 大部分情况,线程使用的数据都是局部变量,变量的地址空间在线程栈空间内,这种情况,变量归属单个线程,其他线程无法获得这种变量。 但有时候,很多变量都需要在线程间共享,这样…

tomcat如何配置保存7天滚动日志

在 Tomcat 中,logging.properties 文件是用于配置 Java 日志框架(java.util.logging)的。若要实现 catalina.out 日志保存 7 天,且每天的日志文件名带有时间戳,可以按以下步骤进行配置: 1. 备份原配置 在修…

数据可视化基本套路总结

首先从维基百科上搬出数据可视化的概念: 数据可视化是关于数据之视觉表现形式的研究;其中,这种数据的视觉表现形式被定义为一种以某种概要形式抽提出来的信息,包括相应信息单位的各种属性和变量。 用人话简单来说,数据…

SQL自学,mysql从入门到精通 --- 第 15天,数据导入、导出

数据的导入、导出 -- 查看当前设置的目录路径,限制从数据库服务器读取和写入文件的操作只能在指定的目录中进行,在安全性和文件操作限制方面具有重要意义。rootmysqldb 14:19: [(none)]> SHOW VARIABLES LIKE "secure_file_priv"; -----------------…

【JVM详解四】执行引擎

一、概述 Java程序运行时,JVM会加载.class字节码文件,但是字节码并不能直接运行在操作系统之上,而JVM中的执行引擎就是负责将字节码转化为对应平台的机器码让CPU运行的组件。 执行引擎是JVM核心的组成部分之一。可以把JVM架构分成三部分&am…

【计算机网络】TCP/IP 网络模型有哪几层?

目录 应用层 传输层 网络层 网络接口层 总结 为什么要有 TCP/IP 网络模型? 对于同一台设备上的进程间通信,有很多种方式,比如有管道、消息队列、共享内存、信号等方式,而对于不同设备上的进程间通信,就需要网络通…

DeepSeek迁移学习与预训练模型应用

迁移学习是一种利用预训练模型的知识来加速新任务训练的技术。通过迁移学习,我们可以在数据量有限的情况下,快速构建高性能的模型。DeepSeek提供了丰富的预训练模型和迁移学习工具,帮助我们高效地完成新任务的训练。本文将详细介绍如何使用DeepSeek进行迁移学习,并通过代码…