
-
特性
基于行复制的彻底并行同步复制
实时多主架构,任意节点可读写
无延迟复制,事务零丢失,可靠健壮的读写体验。
自动化节点关系控制:节点故障自动摘除,节点加入自动协调
接近原生的MySQL数据库链接的体验 2.应用
percona分支的PXC集群,
Maria分支的MariaDB Cluster集群 3.原理简析
当一个事务在当前写入的节点提交后,经过wsrep API(write set replication API)将这个事务变成
写集(write set)广播到同集群的其余节点中,其余节点收到写集事务后,对这个事务进行可行性检查,
并返回结果给wsrep API。
若大多数节点都预估本身能够成功执行这个事务,则wsrep API会作出仲裁,通知全部能够成功执行这
个事务的节点提交这个事务,并将事务成功提交的消息返回给客户端,同时根据须要剔除没有成功执行
事务的节点 4.galera共享库
galera自己是做为一个插件式的共享库文件,MySQL经过调用galera写集复制API挂钩,得到galera集群
特性。
4.1 galera共享库组成部分
galera库是一个提供准备,复制,应用写集事务功能的协议栈,其重要组成部分为:
wsrep API:写集复制功能组件,负责提供关系型数据库管理与复制服务,定义接口
wsrep hooks:在数据库引擎中的集成写集组件
Gelera Provider:将共享库转化为wsrep API
Certification Layer:保护写集并完整性,验证写集完整性
replication:管理复制协议,提供完整的指令系统
GCS framwork:为集群组通讯提供插件架构 5.优点
与异步复制相比:
数据一致性强,传统异步复制并不能保证主从数据一致性,这是因为通常状况下,主库多线程并发执行
事务,但从库却只有一个线程重作事务,在高压力状况下必然会致使主从延迟。
与使用半同步复制或分布式锁实现的同步复制相比:
性能高,扩展性好,半同步复制在高负载甚至从库性能较差的状况下,难以保证其性能。即便自动的
从半同步复制切换到异步复制,也会牺牲其最大的优势:一致性。其扩展友好度也较差
galera集群的独特优点:
1.集群中的每一个节点都保存着一份完整的数据副本,数据备份安全性高
2.集群扩展性强,能够自适应的增长或者下线节点:
新节点上线时,能够空库状态直接从集群中获取全量数据传输(SST),也能够选择从恢复最新备份状
态加入集群,获取差量数据传输(IST)
下线维护其中一个节点时,直接关闭实例,集群就会自动踢出这个节点。维护完毕上线后,会根据自身
数据与集群数据的落后程度决定经过SST或者IST传输数据。
3.高效的同步效率,提供了高性能的读写状态(相对于同步复制)。因为同步机制的缘由,甚至能够
经过增长slave线程的办法更进一步提升节点同步效率
4.更加友好的软硬件兼容性:MySQL官方的NDB,虽然也能够实现一样功能,但因对软硬件要求较高,
致使其使用量与galera集群不在一个数量级,其增长节点容易,但没法不停机移除节点 6.缺点:
DDL操做会严重阻塞同步线程,线上大动做DDL会致使有可能致使节点堵塞无响应,更进一步会致使
部分节点下线。实际使用中须要搭配pt-osc或者gh-osc等在线DDL工具来进行操做DDL。
附:无延迟复制是指写集同一时间提交,但实际环境中可能由于部分缘由致使节点间执行速度有差别,但从理念上已经比半同步复制更先进了一些
本文部份内容参考了galera官方网站的内容,与其《Minimizing downtime and maximizing elasticity with Galera Cluster for MySQL》白皮书sql