percona/percona-xtradb-cluster-operatorPercona Operator for MySQL 是一款用于在 Kubernetes 环境中自动化创建、管理高可用 MySQL 生产集群的工具。它基于 Percona XtraDB Cluster 提供同步复制能力,确保集群可靠性,并完全开源(100% open source),无厂商锁定(vendor lock-in)。其核心目标是简化 MySQL 集群在 Kubernetes 上的部署、扩展与运维,降低人工操作成本,适用于需要稳定、自动化管理数据库基础设施的生产环境。
kubectl 命令行工具并配置集群访问权限;通过 Kubernetes 资源清单部署 Operator:
bash# 获取最新 Operator 部署清单 kubectl apply -f [***] # 验证 Operator 部署状态(确保 pod 运行正常) kubectl get pods -n percona-xtradb-cluster-operator
创建自定义资源(CR)配置文件 my-cluster.yaml,定义集群参数:
yamlapiVersion: pxc.percona.com/v1 kind: PerconaXtraDBCluster metadata: name: my-pxc-cluster spec: secretsName: my-cluster-secrets # 存储数据库凭证的 Secret 名称(需提前创建) pxc: size: 3 # 集群节点数(推荐 3+ 确保高可用) image: percona/percona-xtradb-cluster:8.0.32-24.1 # MySQL 镜像版本 resources: requests: memory: "2G" cpu: "1" limits: memory: "4G" cpu: "2" storage: size: 20Gi # 单节点存储容量 storageClass: standard # 关联的 StorageClass 名称 proxysql: enabled: true # 启用 ProxySQL 负载均衡 size: 2 # ProxySQL 节点数 backup: enabled: true # 启用自动备份 schedule: "0 3 * * *" # 每日凌晨 3 点执行备份 storageType: s3 # 备份存储类型(支持 s3/nfs 等) s3: bucket: my-pxc-backups # S3 存储桶名称 region: us-west-2
应用配置创建集群:
bash# 创建 Secret(存储 root 密码、集群通信密码等,需提前生成) kubectl create secret generic my-cluster-secrets \ --from-literal=root=StrongRootPassword \ --from-literal=xtrabackup=StrongXtrabackupPassword \ --from-literal=monitoring=StrongMonitoringPassword # 部署集群 kubectl apply -f my-cluster.yaml # 验证集群状态(等待所有 pxc、proxysql pod 就绪) kubectl get pods
| 参数路径 | 说明 | 默认值/推荐值 |
|---|---|---|
spec.pxc.size | MySQL 集群节点数 | 3(生产环境推荐 ≥3) |
spec.pxc.resources | 节点 CPU/内存资源限制 | requests: 1CPU/2G,limits: 2CPU/4G |
spec.pxc.storage.size | 单节点持久化存储容量 | 20Gi |
spec.backup.schedule | 自动备份执行周期(Cron 表达式) | "0 3 * * *"(每日凌晨 3 点) |
spec.proxysql.enabled | 是否启用 ProxySQL 负载均衡 | true |
spec.ssl.enabled | 是否启用 TLS 加密通信 | true(默认启用) |
修改 CR 中 spec.pxc.size 字段并应用:
bashkubectl patch pxc my-pxc-cluster --type=merge -p '{"spec": {"pxc": {"size": 5}}}'
bashkubectl apply -f - <<EOF apiVersion: pxc.percona.com/v1 kind: PerconaXtraDBClusterBackup metadata: name: manual-backup-$(date +%F) spec: pxcCluster: my-pxc-cluster EOF
bashkubectl get pxc my-pxc-cluster -o yaml
完整配置说明与高级功能请参见官方文档:
Percona XtraDB Cluster Operator 官方文档
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务