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

原创
09/08 21:01
阅读数 15
绝大部分互联网公司,都使用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,这篇都没人赞?

本文分享自微信公众号 - 架构师之路(road5858)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部