Percona XtraDB Cluster(PXC)原理

介绍:

PXC属于一套近乎完美的mysql高可用集群解决方案,相比传统的基于主从复制模式的集群架构MHA和MM+keepalived,最突出特点就是解决了数据复制延迟问题,基本上可以达到实时同步。节点间关系是对等的,事务要么在所有节点上执行,要么都不执行,它的实现机制决定了它对待一致性的行为非常严格,这也能非常完美的保证MySQL集群的数据一致性.

1.PXC使用端口

  • 3306 数据库对外服务端口
  • 4444 SST全量传输端口, 指数据镜象传输,可先配置:xtrabackup , rsync ,mysqldump
  • 4567 :成员通信端口
  • 4568 : IST增量传输端口(相对于SST的增量)。

2.PXC的优势

  • 强一致性
  • 无同步延迟(个人觉得还是存在延时)
  • 每一个节点都可以读写
  • 用箱子推给Group里所有的成员, data page 相当于物理复制,而不是发blog日志,再重现.
  • 同步的是结果数据.
  • 从节点在apply数据时,支持并行执行,有更好的性能表现

3.PXC的执行流程

客户端先发起一个事务,该事务先在本地执行,执行完成之后就要发起对事务的提交操作了。在给用户响应提交之前需要将写集广播出去,然后获取到一个全局的事务ID号,一并传送到另一个节点上面。通过合并数据之后,发现没有冲突数据,执行apply_cd和commit_cb动作,否则就需要取消此次事务的操作。而当前server节点通过验证之后,执行提交操作,并返回OK,如果验证没通过,则执行回滚。当然在生产中至少要有3个节点的集群环境,如果其中一个节点没有验证通过,出现了数据冲突,那么此时采取的方式就是将出现不一致的节点踢出集群环境。
enter image description here
enter image description here

4.PXC的局限性

  • 只支持Innodb引擎.因为XA事务有可能 在commit的时候出现异常发生rollback
  • 不支持XA事务,
  • 不支持在没有主键的表delete操作,select ...limit也会返回不同的值.
  • 由于基于 乐观的并发控制,事务冲突,执行失败的节点为退出群集 .
  • 没有lock tables,所有表DDL操作,一定要用pt-osc 否则为导致整个集群锁定
  • 最大的事务大小由wsrep_max_ws_rows、wsrep_max_size定义,load data infile每10k行提交次,这种事务将会被拆成数个.
  • 整个集群性能取决于最慢的那个节点.

猜你喜欢

转载自www.cnblogs.com/2woods/p/9427785.html