PXC(Percona XtraDB Cluster)是一个开源的MYSQL高可用解决方案。他将Percona Server和XtraBackup与Galera库集成,以实现同步多主复制。基于Galera的高可用方案主要有MariaDB Galera Cluster和Percona XtraDB Cluster,目前PXC架构在生产线上用的更多而且更成熟一些。PXC相比那些传统的基于主从模式的集群架构MHA和双主,Galera Cluster 最突出的特点就是解决了诟病已久的复制延迟问题,基本上可以达到实时同步。而且节点与节点之间,它们互相的关系是对等的。本身Galera Cluster也是一种多主架构。PXC是在存储引擎层实现的同步复制,而非异步复制,所以其数据的一致性是相当高的。
要搭建PXC架构至少需要三个MySQL实例来组成一个集群,三个实例之间不是主从模式,而是各自为主,所以三者是对等关系,不分从属,这也叫multi-master架构。客户端读写时,链接哪个实例都是一样的,读取到的数据是相同的,写入任意一个实例后,集群会将自己新写入的数据同步到其他实例上,这样架构不共享任何数据,是一种高冗余的集群架构。
PXC实现了MySQL集群的高可用性和数据的强一致性;完成了真正的多节点读写的集群方案;改善了主从复制延迟问题,基本上达到了实时同步;新加入的节点可以自动部署,无需提交手动备份,维护方便;由于是多节点写入,所以DB故障切换很容易。
本文搭建的PXC集群为docker容器部署的三节点集群,上层搭建Haproxy作为负载均衡,对外暴露一个vip地址提供服务。
架构图如下所示: