MySQL-PXC 已弃用。请迁移到 MySQL-MGR。请参阅 迁移指南。
架构
Percona XtraDB Cluster 将运行 XtraDB 存储引擎的 Percona Server for MySQL 与 Percona XtraBackup 和 Galera library 集成在一起,以启用同步多主模式复制。
operator 的设计与 Percona XtraDB Cluster 的高可用实现高度绑定,而后者可以通过下图简要说明。
作为一个常规的 MySQL Server 实例,每个节点都包含在各节点之间同步的相同数据集。推荐的配置是至少拥有 3 个节点。在具有如此数量节点的基本设置中,Percona XtraDB Cluster 可提供高可用性,即使你关闭其中任意一个节点,它也能继续运行。此外,还可以通过 HAProxy router 实现负载均衡,它接收来自 MySQL 客户端的入站流量,并将其转发到后端 MySQL 服务器。
为提供高可用性,operator 使用 node affinity,尽可能将 Percona XtraDB Cluster 实例运行在不同的 worker 节点上。如果某个节点发生故障,运行其上的 pod 会自动在另一个节点上重新创建。
为了为有状态应用提供数据存储,Kubernetes 使用 Persistent Volumes。PersistentVolumeClaim(PVC)用于为 pod 实现自动存储供给。如果发生故障,Container Storage Interface(CSI)应该能够在不同的节点上重新挂载存储。PVC StorageClass 必须支持此功能。
operator 的功能通过 PerconaXtraDBCluster 对象扩展了 Kubernetes API,并以 golang 应用程序的形式实现。每个 PerconaXtraDBCluster 对象都映射到一个单独的 Percona XtraDB Cluster 部署。operator 会监听已创建对象上的所有事件。当创建新的 PerconaXtraDBCluster 对象,或者现有对象发生某些变更或删除时,operator 会自动创建/修改/删除所有所需的 Kubernetes 对象,并应用适当的设置,以确保 Percona XtraDB Cluster 正常运行。