一、PXC概述
PXC是基于Galera协议的MySQL高可用集群架构。具有高可用性、方便扩展且可以实现多个MySQL节点间的数据同步复制和读写,保证数据的强一致性。可以基本达到实时同步且相互的关系是对等的,各节点之间各自为主,这种架构不共享任何数据,是一种高冗余架构。
PXC的操作流程。首先客户端发起一个事务,该事务先在本地执行,执行完成后发起对事务的提交操作前会将产生的复制集广播出去获得一个全局的事务ID号一起传送给其它节点,其它的节点经过验证合并数据后发现没有冲突数据则执行apply_cb和commit_cb操作,否则就执行discard(取消)此次事务操作。当前节点通过验证之后执行提交并返回OK,如果验证不通过则执行回滚。生产环境中如果有一个节点验证没有通过,产生数据冲突则会将不一致的节点踢出集群,被踢出节点自己会执行shutdown。
二、PXC架构优缺点
2.1 优点
(1)实现了MySQL数据库的高可用和数据的强一致性
(2)完成了真正的多节点读写的集群方案
(3)基本达到了实时同步,改善了传统意义上的主从延迟问题
(4)新加入的节点可以自动部署,无需提供手动备份
(5)数据库的故障切换容易
2.2 缺点
(1)新加入的节点开销大,需要复制完整的数据。采用sst传输开销太大
(2)任何更新事务都需要全局验证通过,才会在每个节点库上执行,集群性能受限于性能最差的节点(短板效应)。
(3)因为需要保证数据的一致性,所以在多个节点并发写时,所冲突比较严重
(4)存在写扩大问题,所有节点都会发生写操作
(5)只支持InnoDB存储引擎
(6)没有表