galera集群初探
来源:互联网 发布:上海家博会数据 编辑:程序博客网 时间:2024/06/16 14:56
主节点与备主节点间使用Galera进行同步复制。Galera是MySQLinnodb引擎的同步复制技术。它以插件的形式与innodb引擎直接交互。它确保集群中任何一个提交成功的事务都已经应用到了集群中所有的节点。
为了确保复制的同步,Galera使用基于“Groupcommunication”的“Certification based replication”。
如上图所示,一个事务的处理流程如下:
首先在本地执行
当要提交时Galera会将该事务的变更打包成一个或若干个writeset,并将变更广播到全Group节点。
每个节点获取该事务一个全局唯一且排序的事务ID (trx ID)
每个节点根据trx ID 和 writeset 对该事务进行certification
如果都认证通过了就在每个节点提交这个事务
否则rollback或丢弃这个事务
Certification的过程是基于事务的trxId和相应的writeset进行的。每一个事务都有一个全局排序的事务ID,所以Galera集群中的事务天然有序。假设该事务开始前已提交的最后一个事务ID为lastID,那么last ID到trxId之间的已提交的事务就是有可能与当前事务冲突的事务。每个事务的WriteSet中包含了该事务修改的行以及对于的主键列表。Certification的过程就是比较当前事务writeset中的主键列表与可能冲突的已提交事务的主键列表,如果有冲突,那么就认证失败。
为了提高复制性能Galera使用writeset来封装事务变更,进行批量处理。一个单节点的Galera集群大约比MySQL单机降低不到10%的性能,2节点的Galera集群大约比MySQL单机降低约15%的性能,3个点的Galera集群大约比MySQL单机降低约30%的性能。
Galera中联通的所有节点构成一个节点组,每个节点组都有一个状态编号state id,该编号在节点组内个节点一致,该id会随在节点组数据状态的变更(数据修改)而递增。正常工作的集群只有一个节点组。
当集群中的某个节点脱离集群(节点故障或网络断开),那它就成了一个独立的节点组,Galera会自动判定该节点组的节点数较少,停止该节点组的对外服务以确保数据的一致性。
当故障节点加入集群或新节点加入集群时,Galera会比较加入节点的stateid与集群节点组的stateid。如果不一致,Galera会选定一个集群节点组中的节点向新加入集群的节点进行数据同步。同步过程中新加入的节点无法对外提供服务,直到同步完成。
数据同步过程中新加入节点故障或提供数据同步的节点故障都不影响数据一致性。同步过程中新加入节点的stateid随数据同步而更新,如果同步中断,下一次同步时会接着上一次同步到的stateid继续同步。
- galera集群初探
- Galera集群
- Galera/mysql 集群 备忘
- Galera/mysql 集群
- Mariadb Galera 集群选用
- MySQL Galera集群搭建
- mariadb galera 集群部署
- 转 -- mariadb galera集群配置
- mysql galera 集群常见问题处理
- MySQL Galera Cluster集群+haproxy
- MariaDB Galera Cluster集群优缺点
- What is MariaDB Galera Cluster?( 什么是 MariaDB Galera 集群)
- mysq集群原理之Galera replication
- 【Mariadb】centos7搭建mariadb Galera集群
- MariaDB Galera Cluster 部署(mysql 集群部署)
- Galera Cluster for MySQL 集群备忘(Centos7)
- GALERA集群文档摘要目录及介绍
- centos7 系统上 mariadb galera 集群搭建
- Infinidb 使用笔记1
- glusterfs 快速安装配置
- 网络丢包问题处理
- Linux glibc 的 ma…
- 配置 KVM 的桥接
- galera集群初探
- Heat 模板 搭建集群初探
- How many kinds of Kohonen networks exist?
- pgpool初步调研
- 本地复制一张innodb表的数据
- postgre-xc 初步调研
- 如何在mysql中间件层实现客户端连…
- innodb monitor output&…
- FederatedX 下推语句调研