热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

绝大部分互联网公司,都使用MySQL的InnoDB引擎存储数据。为了保证数据库的高可用,为了保证性能的扩展,绝大部分公司又会使用主从同步&

绝大部分互联网公司,都使用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,这篇都没人赞?》


推荐阅读
  • 本文详细介绍如何在Spring Boot项目中集成和使用JPA,涵盖JPA的基本概念、Spring Data JPA的功能以及具体的操作步骤,帮助开发者快速掌握这一强大的持久化技术。 ... [详细]
  • 设计模式系列-原型模式
    一、上篇回顾上篇创建者模式中,我们主要讲述了创建者的几类实现方案,和创建者模式的应用的场景和特点,创建者模式适合创建复杂的对象,并且这些对象的每个组成部分的详细创建步骤可以是动态的变化的,但 ... [详细]
  • 本文档提供了详细的MySQL安装步骤,包括解压安装文件、选择安装类型、配置MySQL服务以及设置管理员密码等关键环节,帮助用户顺利完成MySQL的安装。 ... [详细]
  • 深入探讨Web服务器与动态语言的交互机制:CGI、FastCGI与PHP-FPM
    本文详细解析了Web服务器(如Apache、Nginx等)与动态语言(如PHP)之间通过CGI、FastCGI及PHP-FPM进行交互的具体过程,旨在帮助开发者更好地理解这些技术背后的原理。 ... [详细]
  • Nagios可视化插件开发指南 —— 配置详解
    本文详细介绍了Nagios监控系统的配置过程,包括数据库的选择与安装、Nagios插件的安装及配置文件的解析。同时,针对常见的配置错误提供了具体的解决方法。 ... [详细]
  • 本文介绍了如何使用Workman框架构建一个功能全面的即时通讯系统,该系统不仅支持一对一聊天、群组聊天,还集成了视频会议和实时音视频通话功能,同时提供了红包发送等附加功能。 ... [详细]
  • 本文探讨了Flutter和Angular这两个流行框架的主要区别,包括它们的设计理念、适用场景及技术实现。 ... [详细]
  • 我们正在使用GNU Make来构建我们的系统,在makefile文件的末尾,我们通过一个名为Makedepends的包含来生成一系列的.d文件。然而,当文件被删除或移动时,依赖关系会中断,我们需要寻找一种方法来优雅地处理这种情况。 ... [详细]
  • 本文旨在为初学者提供一个详细的指南,从零开始学习如何使用 ASP.NET MVC5 和 Entity Framework 6 (EF6) 搭建项目。通过逐步指导,帮助读者理解 MVC 架构的核心概念,并掌握基本的操作方法。 ... [详细]
  • 本文提供了解决在尝试重置MySQL root用户密码时遇到连接失败问题的方法,包括停止MySQL服务、以安全模式启动MySQL、手动更新用户表中的密码等步骤。 ... [详细]
  • 本文探讨了SQLAlchemy ORM框架中如何利用外键和关系(relationship)来建立表间联系,简化复杂的查询操作。通过示例代码详细解释了relationship的定义、使用方法及其与外键的相互作用。 ... [详细]
  • 酷家乐 Serverless FaaS 产品实践探索
    本文探讨了酷家乐在 Serverless FaaS 领域的实践与经验,重点介绍了 FaaS 平台的构建、业务收益及未来发展方向。 ... [详细]
  • Navicat Premium中MySQL用户管理:创建新用户及高级设置
    本文作为Navicat Premium用户管理系列的第二部分,主要介绍如何创建新的MySQL用户,包括设置基本账户信息、密码策略、账户限制以及SSL配置等。 ... [详细]
  • 时序数据是指按时间顺序排列的数据集。通过时间轴上的数据点连接,可以构建多维度报表,揭示数据的趋势、规律及异常情况。 ... [详细]
  • 本文介绍了多种Eclipse插件,包括XML Schema Infoset Model (XSD)、Graphical Editing Framework (GEF)、Eclipse Modeling Framework (EMF)等,涵盖了从Web开发到图形界面编辑的多个方面。 ... [详细]
author-avatar
手机用户2502853847
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有