MySQL 高可用-Galera Cluster

1、Galera Cluster 介绍

Galera Cluster:集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的高可用方案,目前Galera Cluster有两个版本,分别是Percona Xtradb Cluster及MariaDB Cluster,Galera本身是具有多主特性的,即采用multi-master的集群架构,是一个既稳健,又在数据一致性、完整性及高性能方面有出色表现的高可用解决方案。

  • Galera Cluster特点
    • 多主架构:真正的多点读写的集群,在任何时候读写数据,都是最新的
    • 同步复制:改善了主从复制延迟问题,基本上达到了实时同步
    • 并发复制:从节点APPLY数据时,支持并行执行,更好的性能
    • 故障切换:在出现数据库故障时,因支持多点写入,切换容易
    • 热插拔:在服务期间,如果数据库挂了,只要监控程序发现的够快,不可服务时间就会非常少。在节点故障期间,节点本身对集群的影响非常小
    • 自动节点克隆:在新增节点,或者停机维护时,增量数据或者基础数据不需要人工手动备份提供,Galera Cluster会自动拉取在线节点数据,最终集群会变为一致
    • 对应用透明:集群的维护,对应用程序是透明的
  • Galera Cluster 缺点
    • 任何更新的事务都需要全局验证通过,才会在其他节点上执行,则集群性能由集群中最差性能节点决定(一般集群节点配置都是一样的)
    • 新节点加入或延后较大的节点重新加入需全量拷贝数据(SST,State Snapshot Transfer),作为donor( 贡献者,如: 同步数据时的提供者)的节点在同步过程中无法提供读写
    • 只支持innodb存储引擎的表
图片[1]-MySQL 高可用-Galera Cluster-李佳程的个人主页
Galera Cluster工作过程
  • Galera Cluster 包括两个组件
    • Galera replication library (galera-3)
    • WSREP:MySQL extended with the Write Set Replication
  • WSREP复制实现:
    • PXC:Percona XtraDB Cluster,是Percona对Galera的实现
    • MariaDB Galera Cluster:

2、PXC 原理

图片[2]-MySQL 高可用-Galera Cluster-李佳程的个人主页

PXC最常使用4个端口号:

  • 3306:数据库对外服务的端口号
  • 4444:请求SST的端口号
  • 4567:组成员之间进行沟通的端口号
  • 4568:用于传输IST的端口号

PXC中涉及到的重要概念和核心参数:

(1)集群中节点的数量:整个集群中节点数量应该控制在最少3个、最多8个的范围内。最少3个节点是
为了防止出现脑裂现象,因为只有在2个节点下才会出现此现象。脑裂现象的标志就是输入任何命令,返
回的结果都是unknown command。节点在集群中,会因新节点的加入或故障、同步失效等原因发生状
态的切换。

(2)节点状态的变化阶段:

图片[3]-MySQL 高可用-Galera Cluster-李佳程的个人主页
  • open: 节点启动成功,尝试连接到集群时的状态
  • primary:节点已处于集群中,在新节点加入并选取donor进行数据同步时的状态
  • joiner: 节点处于等待接收同步文件时的状态
  • joined: 节点完成数据同步工作,尝试保持和集群进度一致时的状态
  • synced: 节点正常提供服务时的状态,表示已经同步完成并和集群进度保持一致
  • donor: 节点处于为新加入的节点提供全量数据时的状态

donor节点就是数据的贡献者,如果一个新节点加入集群,此时又需要大量数据的SST数据传输,就有可能因此而拖垮整个集群的性能,所以在生产环境中,如果数据量较小,还可以使用SST全量数据传输,但如果数据量很大就不建议使用这种方式,可以考虑先建立主从关系,然后再加入集群。

(3)节点的数据传输方式:

  • SST:State Snapshot Transfer,全量数据传输
  • IST:Incremental State Transfer,增量数据传输

SST数据传输有xtrabackup、mysqldump和rsync三种方式,而增量数据传输就只有一种方式xtrabackup,但生产环境中一般数据量较小时,可以使用SST全量数据传输,但也只使用xtrabackup方法。

(4)GCache模块:在PXC中一个特别重要的模块,它的核心功能就是为每个节点缓存当前最新的写集。如果有新节点加入进来,就可以把新数据的增量传递给新节点,而不需要再使用SST传输方式,这样可以让节点更快地加入集群中,涉及如下参数:

  • gcache.size:缓存写集增量信息的大小,它的默认大小是128MB,通过wsrep_provider_options参数设置,建议调整为2GB~4GB范围,足够的空间便于缓存更多的增量信息。
  • gcache.mem_size:GCache中内存缓存的大小,适度调大可以提高整个集群的性能
  • gcache.page_size:如果内存不够用(GCache不足),就直接将写集写入磁盘文件中

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享