- 引言
- 拉取镜像
- 创建单节点实例(一般在测试环境中使用)
- 自定义网络(集群间相互隔离)
- 映射数据目录
- 创建docker-compose PXC容器
- 用docker-compose启动PXC集群
- 集群验证
- 数据库负载均衡的必要性
- Haproxy负载均衡器部署
- 故障排查
引言
告别单点故障,拥抱持续可用——构建基于 Percona XtraDB Cluster 的 MySQL 高可用集群
在现代数字化业务的核心,数据库扮演着至关重要的角色。作为应用数据的基石,MySQL 数据库的高可用性 (High Availability, HA) 和数据一致性直接决定了服务的连续性、用户体验的流畅度以及企业的声誉和收益。传统的单节点 MySQL 部署或简单的主从复制架构,在面对硬件故障、网络中断、计划内维护甚至数据中心级灾难时,往往显得力不从心,单点故障 (SPOF) 的风险如同达摩克利斯之剑,时刻威胁着业务的稳定运行。
当数据库服务中断,随之而来的可能是交易失败、用户流失、服务降级乃至品牌受损。因此,构建一个能够自动故障转移、提供近乎零停机维护窗口、并确保数据强一致性的数据库集群环境,已成为支撑关键业务系统的刚性需求。
Percona XtraDB Cluster (PXC) 正是在这一背景下脱颖而出的强大解决方案。它基于成熟的 Galera 库技术,将 MySQL 数据库(具体是其增强分支 Percona Server for MySQL)与同步多主复制机制深度集成。PXC 的核心魅力在于它实现了 “多主同时读写 (Multi-Master)” 的架构:
- 真正的同步复制: 数据变更在提交时近乎实时地同步到集群所有节点,从根本上保障了数据的强一致性。
- 自动成员控制与故障转移: 节点状态自动感知,一旦主节点失效,客户端可无缝切换到其他健康节点继续读写,极大缩短甚至消除服务中断时间 (RTO)。
- 并行复制与高性能: 优化的复制流程提供了良好的性能表现,满足大部分 OLTP 场景需求。
- 数据一致性保障: 基于认证的复制机制,确保集群内所有节点在任意时刻都保持数据视图的一致性。
- 透明兼容性: 对上层应用而言,PXC 集群表现得如同一个单一的 MySQL 数据库,应用无需或只需极少的修改即可接入。
本文将深入探讨如何利用 Percona XtraDB Cluster 构建一个健壮的 MySQL 高可用集群。我们将从核心概念解析入手,逐步指导您完成集群的规划、部署、配置优化,并介绍关键的运维操作(如节点增删、状态监控、备份恢复)和故障处理策略。无论您是寻求为关键业务数据库增添韧性,还是希望提升数据库基础设施的现代化水平,跟随本文的指引,您都将掌握构建一个自主可控、高可用的 MySQL 数据库服务集群的关键技能,为您的业务数据保驾护航,开启数据库持续可用的新篇章。
拉取镜像
- Docker hub 官网
https://hub.docker.com/r/percona/percona-xtradb-cluster
这里拉取8.0.23(需要翻墙),为了方便也可以采用下面国内镜像
docker pull percona/percona-xtradb-cluster:8.0.23//国内
docker pull www.ecnfo.com:1443/proxy/percona/percona-xtradb-cluster:8.0.23
创建单节点实例(一般在测试环境中使用)
docker run -d \--name pxcnode1 \-e MYSQL_ROOT_PASSWORD=yyinfo2021 \-e CLUSTER_NAME=pxc-cluster \-e XTRABACKUP_PASSWORD=yyinfo2021 \-e MYSQL_CLUSTER_BOOTSTRAP=yes \-p 3306:3306 \www.ecnfo.com:1443/proxy/percona/percona-xtradb-cluster:8.0
自定义网络(集群间相互隔离)
docker network create --driver bridge --subnet 10.139.0.0/16 --gateway 10.139.0.1 pknet
预先创建一个自定义的网络pkulaw_net,此处的10.139可以自定义,不冲突即可。创建自定义网络的好处是不同的集群使用不同的网络,保证集群是安全和健康的。
网络模式
bridge :桥接 docker(默认,自己创建也是用bridge模式)
none :不配置网络,一般不用
host :和所主机共享网络
container :容器网络连通(用得少!局限很大)
查看网络的相关信息
docker network inspect pknet
映射数据目录
创建Docker卷对应pxc容器与宿主机的数据映射
docker volume create --name pxcnode1
docker volume create --name pxcnode2
docker volume create --name pxcnode3
查看数据卷
//列表
docker volume list
//指定数据卷
docker inspect pxcnode1
删除数据卷
docker volume rm pxcnode1
创建存储目录,并授予权限
mkdir -p /root/installs/pxc/{logs,pxcnode1,pxcnode2,pxcnode3} && cd /root/installs/pxcchmod