Percona XtraDB Cluster(PXC):Percona XtraDB Server +WSREP API(write set replication patches)  +  Galera(galera library)

转自:http://blog.chinaunix.net/uid-25206403-id-3912291.html
同类基于验证复制的集群结构:
codership 开源产品:Galera Cluster for MySQL
mariadb 基于galera集群:maria galera cluster

pxc是基于验证的数据强一致性数据复制的mysql集群,特性分析:
优点:
          1.高可用性,节点不可用不影响集群正常运行。
          2.强一致性,可以将读扩展到多个节点上。     
          3. 节点的增加数据同步自动化(IST,SST)。
          4. 可实现多点读写,但写压力仍要同步到所有节点。
缺点:
        1.由于ddl需全局验证通过,则集群性能由集群中最差性能节点决定。
        2.为保证一致性,galera 总是优先保证数据一致性,在多点并发写时,锁冲突问题严重
        3.新节点加入或延后较大的节点重新加入需全量拷贝数据(sst),作为donor的节点在同步过程中无法提供读写
        4.数据冗余度为节点数

名词:
    WS:write set 写数据集
    IST: Incremental State Transfer 增量同步
    SST:State Snapshot Transfer 全量同步 
    UUID:节点状态改变及顺序的唯一标识。
    GTID:Global Transaction ID ,由UUID和偏移量组成。wsrep api 中定义的集群内全局事务id。

PXC工作原理:

节点接收sql 请求后,对于ddl 操作,在commit之前,由wsrep API 调用galera 库进行集群内广播,所有其他节点验证成功后事务在集群所有节点进行提交,反之roll back。pxc 保证整个集群所有数据的强一致性,满足CAP理论中满足:Consistency 和  Availability。

WSREP API:
    在DBMS和wsrep provider 之间提供接口。

GTID:Global Transaction ID. 由UUID 和 sequence number组成,用于标示集群中发生状态改变的唯一标示以及队列中的偏移量。
Galera wsrep provider:

  • 完成事务在集群内的广播:本地事务发送给其他节点验证,接收其他节点事件本地验证并返回结果
  • 应用从其他节点接收并全局验证通过的事件到本地。
  • 集群内通信,节点存活的检测,pc的选举等
  • 脑裂,为避免节点失效导致pc选举失败整个集群不可用,建议节点数至少为3
  • 多点写入时的锁冲突检测机制
  • 等待队列中事务的并发提交

复制模块:

galera的group communication 层实现统一全局数据同步策略和集群内所有事务的排序,便于生成GTID。
对于每一个节点有2方面工作:

  • 完成数据同步。
  • 完成与其他节点的通信。

galera 的replication 层完成数据同步,由slave queue 和applier 组成,在事务的同步过程中,事务在队列中以及应用线程中时于节点本地产生锁冲突处理方式。replication 模块的效率直接影响整个集群的写入性能。
同步过程中,本地事务和等待队列中的锁冲突:
     innodb内部使用悲观锁,保证事务的成功进行和提交。pxc中使用乐观锁,以避免在每个节点获取锁以及网路开销,在写入节点上,事务在提交之前与单点的innodb一样,到达提交点时,向集群其他节点广播(galera 库完成 并发)事物并等待各节点验证结果,如果所有节点都返回成功,则提交,反之,回滚。
     pxc 中先提交的事物成功,其他事务(本地或其他节点同步)将回滚或报死锁错误。
相关状态值:

  • wsrep_local_cert_failures  同步过程中节点认证失败计数,冲突来自本地提交的事务和同步队列中事务存在锁冲突,则本地验证失败(保证全局数据一致性)
  • wsrep_local_bf_aborts     强制放弃,本地事务和同步队列中正在执行的事务存在锁冲突时,将强制保证先提交的事务成功,后者回滚活报错

验证模块:

验证过程中,节点在接收到其他节点writeset后,在本地做冲突验证并返回验证结果

节点状态机:
Regular Transitions:

状态机变化阶段:
     1.OPEN: 节点启动成功,尝试连接到集群,如果失败则根据配置退出或创建新的集群
     2.PRIMARY: 节点处于集群PC中,尝试从集群中选取donor进行数据同步
     3.JOINER: 节点处于等待接收/接收数据文件状态,数据传输完成后在本地加载数据
     4.JOINED: 节点完成数据同步工作,尝试保持和集群进度一致
     5.SYNCED:节点正常提供服务:数据的读写,集群数据的同步,新加入节点的sst请求
     6.DONOR:节点处于为新节点准备或传输集群全量数据状态,对客户端不可用。
状态机变化因素:
     1.新节点加入集群
     2.节点故障恢复
     3.节点同步实效

Percona XtraDB Cluster(PXC)——架构原理相关推荐

  1. Percona XtraDB Cluster(PXC) Mysql 集群

    Percona XtraDB Cluster(PXC)   ---原理介绍篇         目录 一.简介 1 二.优缺点 2 三.区别/局限性 3 四. PXC复制原理 4 五. 服务解释 5   ...

  2. 基于CentOS 7 安装Percona XtraDB Cluster(PXC) 5.7

    转载来源:https://blog.csdn.net/robinson_0612/article/details/78962190 基于CentOS 7 安装Percona XtraDB Cluste ...

  3. Mysql搭建PXC集群 - Percona XtraDB Cluster

    转载来源:https://blog.csdn.net/lvshaorong/article/details/80501905  pxc集群是Percona XtraDB Cluster的缩写,是基于p ...

  4. CentOS 7 安装 Percona XtraDB Cluster 5.7

    前言 CentOS 7 安装 Percona XtraDB Cluster(PXC) 5.7,记录一下安装过程. 主要安装过程 Percona 的官方文档 Percona XtraDB Cluster ...

  5. MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解

    MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解 Percona XtraDB Cluster简称PXC.Percona Xtradb Cluster的实现是在 ...

  6. mysql集群方案PXC_【Mysql】MySQL集群方案之PXC(percona xtradb cluster)

    Mysql PXC介绍 在传统的Mysql主从架构上,采用的Replaction是异步复制方式,这种方式会存在数据弱一致性的问题,数据写入主库之后因为网络及复制的延迟从库不能马上获取刚刚插入的数据,同 ...

  7. PXC(Percona XtraDB Cluster)集群安装

    作者在2014Oracle数据库嘉年华中有幸听到了关于去哪网的MySQL数据库基于PXC的高可用架构设计主题. MySQL和Oracle是完全不同的两种数据库,Oracle重于管理,而MySQL更重要 ...

  8. MySQL高可用架构之Percona XtraDB Cluster

    简介 Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案,Percona XtraDB Cluster提供的特性如下: 1.同步复制,事务要么在所有节点提交或不提交. ...

  9. Percona XtraDB Cluster 集群参数配置说明(PXC 5.7)

    从PXC5.7版本开始,集群的配置主要是通过wsrep.cnf配置来实现.这个文件有几个常用的参数配置.下文对其做简要说明. 一.PXC 5.7集群配置文件 如果是直接通过yum方式安装,那么配置文件 ...

最新文章

  1. OpenCV求逆(伪逆)矩阵函数
  2. 计算 webView 显示内容后实际高度
  3. 百度吴甜宣布百度AI加速器第二期开营,要让创业者跑得更快
  4. Linux无法启动(一)
  5. java.lang.IllegalArgumentException: Receiver not registered
  6. xml内容过多装不下,怎么实现下滑功能(最简单的下滑功能实现)
  7. QT绘制百分比条形图。
  8. 每日两道前端面试题20190221
  9. 经典问题:微服务和分布式的区别
  10. Jquery ajax 学习笔记
  11. 江苏师范大学计算机全国排名,国内131所二本师范大学最新排名(按录取分数线)...
  12. 10.1寸大屏安卓通用车载导航
  13. 使用蒙特卡罗模拟期权定价
  14. Java打印直角三角形
  15. 订单量排行 php,订单量增速最快B2C电商未来电子商务的趋势网站
  16. 示波器电流探头工作原理-Pintech品致
  17. python微信刷票代码_微信刷票漏洞详解,Python脚本实现一秒破万!
  18. TortoiseSVN配置
  19. 【芯片使用】PCF8591
  20. 图像篡改入门02 利用空间结构篡改定位

热门文章

  1. 【Android应用开发技术:用户界面】界面导航设计
  2. METIS安装和使用
  3. 思科认证介绍(各种证书)
  4. 条件随机场(CRF)原理和实现
  5. 服务器常用状态码及其含义
  6. 基于STM32与PCA9685制作四足机器人(代码开源)
  7. mysql日期时间相关
  8. Pytorch图像预处理——归一化、标准化
  9. 电脑开机为什么会出现黑屏
  10. 区块链Fabric 技术架构和交易流程