搭建高可用mysql系列(1)-- Percona XtraDB Cluster介绍

时间:2023-03-09 00:09:06
搭建高可用mysql系列(1)-- Percona XtraDB Cluster介绍

  Percona XtraDB Cluster (下文简称PXC)是一个开源的mysql 高可用解决方案。它将Percona Server和Percona XtraBackup与Galera库集成在一起,实现同步多主复制。各节点的拓扑结构示意图如下图所示:

  搭建高可用mysql系列(1)-- Percona XtraDB Cluster介绍

  

  如图所示,PXC 各节点的地位是对等的,集群中的每个节点都可以用于读写,只要当集群中可用节点的数量处于多数时,整个集群就是可用的,在此基础上加上mysql的监控和 mysql proxy 的流量自动切换,这样就很大程度上解决了 mysql 的高可用问题。

  PXC 有如下的一些特性(优点):

  • 同步复制
    数据要么同时写入所有的节点,要么不写入
  • 多主复制
    集群中每个节点都可以写入数据
  • 并行复制
    在行级复制上支持多线程 (Multiple threads on slave performing replication on row level. )
  • 数据一致性与节点自动同步
    加入集群的节点默认会自动同步
  • 数据兼容性
    支持mysql以及mysql变体(如MariaDB)
  • 应用兼容性
    与 mysql 命令完全兼容

  PXC 的不足之处在于(缺点):

  • 目前只对 InnoDB engine 有比较好的支持,myisam 实现了部分支持
  • 所有的表都需要有主键
  • 不支持分布式事务
  • 由于所有的写操作都需要在所有的节点进行同步,因此集群的服务能力取决于集群中性能最差的一台服务器
  • InnoDB fake changes不支持
  • 有多少个节点就有多少份重复的数据(最少支持两个真实节点加一个仲裁者,仲裁者只参与投票,不存储数据)
  • 不支持LOCK TABLE等显式锁操作
  • 对于改表这样的操作会导致整个cluster阻塞,需要尽量避免
  • 新加入节点开销较大(采用指定节点同步+流量切换的方式一定程度可以解决这个问题)

   

  虽然 PXC 有上述的一些缺点,但是瑕不掩瑜, 个人理解如果使用的数据库都是 InnoDB 引擎,数据条目相对固定(不需要经常改表),不需要支持分布式事务,并且对可用性要求很高,可以考虑采用 PXC。