CentOS 7 系统环境准备
在开始配置 Percona XtraDB Cluster (PXC) 之前,确保系统满足基本要求,更新系统至最新状态,执行 yum update -y 安装必要的依赖包,如 wget、vim 和 libaio,关闭防火墙和 SELinux,避免权限冲突:systemctl stop firewalld && systemctl disable firewalld,sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config,为 PXC 配置静态 IP 地址,确保节点间网络互通,建议在 /etc/hosts 文件中添加所有节点的主机名和 IP 映射,便于后续管理。

安装 Percona XtraDB Repository
PXC 官方推荐通过 Percona Yum 仓库安装,首先下载并添加 Percona 仓库配置文件:wget https://repo.percona.com/yum/percona-release-latest.noarch.rpm,然后执行 yum localinstall percona-release-latest.noarch.rpm -y 安装仓库,安装后,可通过 yum repolist enabled "*/percona-*" | grep " \[x\]" 验证仓库是否启用,若需指定 PXC 版本(如 8.0),可使用 percona-release setup ps80 命令切换至对应版本仓库。
部署 PXC 集群节点
以三节点集群为例,每个节点需安装相同的 PXC 包,执行 yum install percona-xtradb-cluster-80 -y 开始安装,安装完成后,初始化配置文件 /etc/my.cnf,添加以下关键参数:
wsrep_provider = /usr/lib64/libgalera_smm.so(Galera 库路径)wsrep_cluster_name = pxctest(集群名称,需所有节点一致)wsrep_cluster_address = gcomm://node1_ip,node2_ip,node3_ip(集群节点列表)binlog_format = ROW(二进制日志格式)innodb_autoinc_lock_mode = 2(避免自锁问题)
启动并验证集群
首次启动节点时需指定 --wsrep-new-cluster 参数以初始化集群,在第一个节点执行 systemctl start mysqld --wsrep-new-cluster,后续节点直接执行 systemctl start mysqld 即可,启动后,通过 systemctl status mysqld 检查服务状态,并使用 mysql -u root -p 登录 MySQL,执行 SHOW STATUS LIKE 'wsrep_cluster_size'; 验证集群节点数,若返回 3 则表示集群正常。

高可用与故障转移测试
PXC 集群支持自动故障转移,模拟节点故障时,可执行 systemctl stop mysqld 停止其中一个节点,其他节点会自动重新同步数据,恢复故障节点后,执行 SHOW STATUS LIKE 'wsrep_local_state_comment'; 确认其状态为 Synced 即可重新加入集群,建议配置 pxc_maint_mode 参数,在维护节点时临时禁用写入,避免数据不一致。
监控与性能优化
使用 Percona Monitoring and Management (PMM) 或 pt-heartbeat 工具监控集群状态,定期检查 wsrep_flow_control_paused 状态值,若频繁高于 0.1,可能需调整 wsrep_slave_threads 参数,优化 innodb_buffer_pool_size 为系统内存的 70%-80%,并根据业务负载调整 max_connections,避免连接耗尽问题。
FAQs

Q1: 如何重置 PXC 集群 root 密码?
A1: 若忘记 root 密码,可停止集群服务,跳过权限表启动 MySQL:systemctl stop mysqld,mysqld_safe --skip-grant-tables &,然后执行 mysql -u root 更新密码:UPDATE mysql.user SET password=PASSWORD('new_password') WHERE user='root'; FLUSH PRIVILEGES;,最后重启服务并重新加入集群。
Q2: PXC 集群节点间时间不同步会导致什么问题?
A2: 节点时间不同步可能引发 wsrep_flow_control 异常,导致数据复制延迟或集群分裂,建议使用 NTP 服务同步所有节点时间,执行 yum install ntp -y 并配置 systemctl start ntp && systemctl enable ntp 确保时间一致。