Mysql的“三高”集群架构

本文探讨了MySQL的主从同步方案,重点介绍了MHA(MasterHighAvailability)和PXC(PerconaXtraDBCluster)在解决高可用性和数据一致性问题上的特点。MHA侧重快速写入但非强一致性,而PXC则提供实时强一致性但牺牲性能。文章还提到了实际场景中的选择策略和大型电商如天猫双11的应用实例。
摘要由CSDN通过智能技术生成

主从方案是我们很多中间件采用的方式,Mysql的主从方式,数据由主Mysql同步到从Mysql中,数据同步是单向的。

同步的方案有几种方案(异步、同步、半同步),网上介绍很多,老顾就不详细讲了。

主从方案的特点:

1、解决了数据安全问题
2、结合一些中间件(如:mycat)或工具(如:sharding-jdbc)实现读写分离;提高Mysql的整体性能/负载
注:读写分离含义:数据的更新(即写请求)操作的是主Mysql,数据再同步到从Mysql中;读取数据(读请求)是访问的从Mysql。

我们从图中可以看出,一主多从的方案中只有一个写节点(主mysql),一旦主Mysql出现问题,整个系统就无法进行写请求,那肯定是不行的。
**主Mysql有单节点故障隐患,怎么解决?**网上说的方案也有很多,老顾只介绍大厂采用的,比较成熟的方案。

MHA方案

MHA全称Master High Availability,从名字上面就可以看出它的作用,就是解决主节点的高可用问题

MHA目前在 MySQL 高可用方面是一个相对成熟的解决方案,它由日本人开发,是一套优秀的作为 MySQL高可用性环境下故障切换和主从提升的高可用软件。MHA 能做到 0~30 秒之内自动完成数据库的故障切换操作

MHA 由两部分组成:MHA Manager(管理节点)和 MHA Node(数据节点),如图:
图片
管理节点主要起到监控作用,如果发现主节点不可用,就发起主从切换和故障转移

目前MHA主要支持是一主多从的架构,要求至少要3个节点,一主二从

那MHA在主节点挂掉后,是怎么进行切换的

1、主节点挂了,在从节点中重新选举一个新备选主节点,原则是binlog最新最近更新的从节点作为新备选主节点。
2、在备选主节点和其他从节点之间同步差异中继日志(relay log)
3、应用从原来的主节点上保存二进制日志
4、提升备选主节点为新主节点
5、迁移集群其他从节点 作为 新主节点的 从节点。

上面介绍了是核心流程,其实MHA内部做了很多业务,核心思想就是尽可能的保证数据一致性,不让数据丢失。虽然MHA已经做了很好,但有些场景还是不能避免。
还有一个问题就是
主节点把数据同步到从节点是有延时
的,尤其在高并发情况下,同一刻主节点和从节点数据会不一致。

Mysql在这方面也进行很多优化,如半同步方式,在5.7版本又增加了after sync方式,确保数据一致,但多个从节点之间还是存在数据延时。

那有没有一个方案能够确保数据的强一致性?我们接着往下看。

PXC方案

PXC是percona公司的percona  xtraDB  cluster,简称PXC。它是基于Galera协议的高可用集群方案。可以实现多个节点间的数据同步复制以及读写,并且可保障数据库的服务高可用及数据强一致性
图片
PXC架构中Mysql无主从之分,都是相同的。而且每个节点都是能够提供读和写,是不是很酷,那PXC是怎么实现各个节点数据强一致性的呢图片
上面是个时序图,就是PXC执行的流程,小伙伴们是不是感觉很复杂,老顾可以教大家可以这样理解:

其实就是一句话,PXC的原理其实在提交事务时,确保所有的节点事务都要成功提交,才返回成功;如果其中有一个不成功,就回滚数据,返回不成功,

正因为这样的原理,就确保数据肯定是一致的,而且是实时一致;当然这样就导致性能有损耗。PXC另一个好处就是每个节点都可以提供读写请求,不管写在哪个节点,都能够保证数据强一致性。

MHA与PXC

1、MHA主要写入速度很快,但数据不是强一致性
2、PXC保证数据强一致性,但写入速度慢

有没有取他们优点的方案呢?来一个终极方案。老顾告诉小伙伴们,其实很多方案不可能都是优点,没有缺点,不可能很完美,最主要的是要知道在什么场景下运用什么方案
根据MHA 和 PXC方案的特点,我们可以结合自己的业务去决定怎么使用它们?

PXC适合存储高价值的数据,要求数据强一致性,如:账户,订单,交易等等
MHA适合存储低价值的数据,不要求强一致性,如:权限,通知,日志,商品数据,购物车等等

现实情况,很多大厂都是结合使用的,我们看看2017年天猫双11,数据库峰值4200万次/秒,支付峰值25.6万次/秒;这个支付峰值已经创造了一个世界记录(国人的骄傲)。

我们发现支付场景的峰值相对其他业务的峰值比较低,这个是因为支付场景肯定是要求数据强一致性的,只要涉及到钱,用户都会很在意。

最终推荐方案

图片
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

写在最后

为了这次面试,也收集了很多的面试题!

以下是部分面试题截图

Java程序员秋招三面蚂蚁金服,我总结了所有面试题,也不过如此
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
讲义》点击传送门即可获取!**

  • 16
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值