【Mysql】MySQL集群方案之PXC(percona xtradb cluster)
Mysql PXC介绍
在传统的Mysql主从架构上,采用的Replaction是异步复制方式,这种方式会存在数据弱一致性的问题,数据写入主库之后因为网络及复制的延迟从库不能马上获取刚刚插入的数据,同时它只保证当前节点提交数据成功,而不保证数据同步成功,所以主从复制过程中可能会丢掉数据。
而在某些业务场景下我们需要保证数据的强一致性,数据不能丢失,比如交易系统。而PXC就可以保证数据的强一致性。脱胎于MySQL Galera 技术的PXC是MySQL服务和工具提供商percona实现的percona xtradb cluster,简称PXC。
PXC提供了读写强一致性的功能,可以保证在任一个节点中写入数据的同时可以同步给其他的节点,其他任一个节点都可以进行读取操作,每个节点的数据是完全一致的。PXC集群里任何一个节点数据都是可读可写,可以读写任何一个节点里的数据。
PXC的优点:
1.实现mysql数据库集群架构的高可用性和数据的强一致性。
2.完成了真正的多节点读写的集群方案。
3. 改善了传统意义上的主从复制延迟问题,基本上达到了实时同步。
4.新加入的节点可以自动部署,无须提供手动备份,维护起来很方便。
5.PXC集群数据同步是双向的,在第一个节点写入数据,那么会同步其他的节点上。由于是多节点写入,所以数据库故障切换很容易。
PXC的缺点:
1. 新加入的节点开销大,需要复制完整的数据。采用SST传输开销太大。
2.任何更新事务都需要全局验证通过,才会在每个节点库上执行。集群性能受限于性能最差的节点,也就是经常说的短板效应。
3.因为需要保证数据的一致性,所以在多节点并发写时,锁冲突问题比较严重。
4.存在写扩大问题,所有的节点上都会发生些操作。
5.只支持innodb存储引擎的表。
6.没有表级别的锁定,执行DDL语句操作会把整个集群锁住,而且也 kill 不了(建议使用Osc操作,即在线DDL)
7.所有的表必须含有主键,不然操作数据时会报错。