MySQL主从之外,你又多了一项选择,Galera

架构师之路

共 1387字,需浏览 3分钟

 ·

2021-09-13 19:16

绝大部分互联网公司,都使用MySQL的InnoDB引擎存储数据。

为了保证数据库的高可用,为了保证性能的扩展,绝大部分公司又会使用主从同步,读写分离的MySQL集群架构。

传统的主从同步,读写分离MySQL集群架构如上图所示:
(1)主库:左侧第一个实例,提供写服务的实例;
(2)从库:右侧两个实例,提供读服务的实例;

此时数据复制是如何实现的呢?
仍如上图所示:
(1)客户端将写操作提交给主库;
(2)Replication:主库将操作序列化,通过binlog的方式传输给从库;
(3)从库执行相同序列的操作,以实现副本冗余;

传统的主从同步,读写分离冗余模式,数据库集群存在什么问题呢?
(1)用户要关注集群细节,实施读写分离;
(2)写库仍是单点,性能无法线性扩充;
(3)读库有延时,数据不一致;
(4)写库挂了,从库顶上,可能出现数据丢失
(5)如果引入中间件,SQL能力会受影响
(6)运维复杂性
(7)…

既然这么多痛点,有没有一项技术,能够解决大家的问题呢?
Galera集群(Galera Cluster)孕育而生。

什么是Galera集群?
Galera集群是一个基于MySQL InnoDB同步复制的:
(1)同步;
(2)多主;
(3)数据库集群;
画外音:它能支持例如MariaDB等其他数据库,本文重点讲MySQL。

如上图所示:
(1)Galera集群由一组MySQL集群组成;
(2)Replication:这一组MySQL服务器使用复制插件来管理数据库复制;
(3)客户端可以读写集群中的任何一个节点;

Galera集群官网号称,它及其流弊:
(1)真正的多主(True Multi_Master),任何数据修改会被复制到其他节点;
(2)没有所谓的从库延时(slave lag),同步复制;
(3)强一致性,所有节点处于一致的状态;
(4)热备,高可用,不需要处理所谓的主从故障转移,也不需要虚IP;
(5)无需读写分离,随时可以读写任何节点;
(6)支持InnoDB
(7)对应用程序透明
(8)…
 
总之,在官网的描述中,Galera集群是一个高可用的,高性能的,能保证数据一致性与完整性的:
(1)针对MySQL的
(2)基于同步认证的(synchronous certification-based)
(3)多副本(replication)
解决方案。
 
网上Galera的资料好像比较少,问了几个之前的朋友,在互联网公司似乎也用得不多,准备深入写一下Galera集群,毕竟是MySQL主从之后的又一种选择。
 
关于官网吹得飞起的Galera,你对哪些技术点感兴趣呢?你猜它是怎么实现的呢?大家觉得是否要深入写下去,or换别的话题呢?

评论里告诉我。
MySQL内核相关文章

缓冲池(buffer pool),这次彻底懂了!

写缓冲(change buffer),这次彻底懂了!

日志缓冲(log buffer),这次彻底懂了!

double write buffer,这次彻底懂了!

关于MySQL,这篇都没人赞?

浏览 50
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报