PXC/Galera集群集群概述及原理分析

mariadb的galera集群集群抄袭percona的PXC数据库集群,所以原理一样


<强> # # # galera集群/PXC集群工作原理

客户端向服务器端发送dml更新操作请求时,服务器的本地本地进程处理请求,并返回好准备接收,客户发送提交更新事务给服务器,服务器将复制writeset复制写数据集发给组(集群集群),集群将该数据集对应产生的唯一的GTID(全局事务ID)发送给集群每个服务器(节点)。当服务器前节点验证通过后,执行commit_cd动作更新本地数据库,并返回好,若其他节点验证不通过,则执行rollback_cd,回滚刚提交的事务。其他服务器(服务器)接收并验证通过后,执行apply_cd和commit_cd动作更新本地数据库;若验证不通过,则丢弃该数据集。

 PXC/Galera集群集群概述及原理分析


innodb内部使用悲观锁,保证事务的成功提交和执行。

PXC/Galera集群采用乐观锁,所有的事务都广播给集群每个节点,验证不通过再回滚,


<强> # # # PXC/Galera集群集群架构

 PXC/Galera集群集群概述及原理分析“> <br/> </p> <p>组通信层:主要实现统一全局数据同步策略和集群内部所有事务的排序,便于生成GTID </p> <p>复制层:主要用于完成数据同步,由灌肠器和奴隶队列组成.replication模块的效率直接影响整个集群的写入功能</p> <p> <br/> </p> <p> <强> # # #主要名词解释</强> </p> <p> WS ,,,写设置写数据集,写/更新事务</p> <p> IST ,增量状态传输增量同步</p> <p> SST 快照,状态转移增量同步。传输SST的几种方法:mysqldump/xtrabackup rsync </p> <p> UUID ,,,节点状态改变及顺序的唯一标识</p> <p> GTID ,,,全局事务ID,由UUID和序列号偏移量组成.wsrep api中定义的集群内部全局事务ID、用于记录集群中发生状态改变的唯一标识以及队列中的偏移量。</p> <p> wsrep API ,,,在DBMS库和wsrep提供者之间提供接口</p> <p> commit ,,,,,把事务所做的修改提交到数据库,即在库中执行用户的sql请求,</p> <p> <br/> </p> <p> <强> # # # PXC/Galera集群集群端口</强> </p> <p> 3306,,,,数据库对外提供服务的端口<br/> </p> <p> 4444,,,,镜像数据传、输海温集群数据同步端口,全量同步,新节点加入时起作用</p> <p> 4567,,,,集群节点间相互通信的端口<br/> </p> <p> 4568,,,,增量数据同步是,节点下线,重启后使用该端口,增量同步数据。</p> <p> <br/> </p> <p> <br/> </p> <p> <强> # # #节点状态</强> </p> <p> <img src= <李>

OPEN ,,,节点启动成功,尝试连接到集群,如果失败则根据配置退出或创建新的集群

<李>

PRIMARY 节点已处于集群中,在新节点加入时,选取供体进行数据同步时会产生的状态

<李>

JOINER 节点处于等待接收/接收同步文件时的状态

<李>

JOINED ,节点完成数据同步,但有部分数据没跟的上,在尝试保持和集群进度一致的过程状态

,,,,,例如某个节点故障后,重新加入集群,在追赶集群进度时的状态

5。SYNCED ,,,节点正常提供服务的状态,表示已经同步完成并和集群进度保持一致。

6。DONOR ,,,节点处于为新节点提供全量数据数据同步时的状态。此时该节点对客户端不提供服务。


# #节点状态发生变化因素

<李>

新节点加入集群,

<李>

节点故障恢复,重新加入集群

<李>

节点同步失效


<强> # # # PXC/Galera集群集群优缺点

优点:

,,,, 1。高可用性。集群多个节点功能平等,提供负载和冗余,避免单点故障

,,, 2。强一致性。集群所有节点同步修改数据,真正同步读写,不存延迟。

,,, 3。易扩展。增加新节点,只需扔进集群,会自动完成SST全量同步,和后续是增量同步

缺点:

,,,, 1。任何更新事务都需要全局验证通过,才会在每个节点库执行。集群性能受限于性能最差的节点

,,, 2。galera/pxc集群保证数据一致性,必须所有节点验证通过。多点并发写入,锁冲突严重。

,,,,,,,,例如:多台同时有写操作,每个更新操作时,都会锁库来验证

PXC/Galera集群集群概述及原理分析