百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

MySQL集群详解(3种集群模式及架构原理)

yuyutoo 2024-11-08 15:39 3 浏览 0 评论

大家好,我是mikechen。

MySQL集群是大流量高并发场景必备的节能,而且大厂也特别喜欢考察,下面我就重点来详解MySQL集群的3种主流模式@mikechen

本篇已经收纳于mikechen创作的《阿里架构师进阶专题合集》里面。

MySQL集群

MySQL Cluster是MySQL集群的一种常用技术,是分布式节点架构的存储方案,典型特征:多主多从结构。

MySQL集群的Cluster部分是独立配置在MySQL服务上面的,在MySQL集群中集群的每个部分都被看做是一个节点(node)。

MySQL集群作用

1.高可用性

故障检测及迁移,多节点备份。

2.可伸缩性

新增数据库节点便利,方便扩容。

3.负载均衡

切换某服务访问某节点,分摊单个节点的数据库压力。

MySQL集群模式

1.读写分离集群模式

优点:适用于读多写少的应用,可以分摊数据库的压力,可以配合MHA中间件方案实现高可用。

因为每个节点的数据量都是一样的,因为是通过数据冗余实现主从分离的。

如果数据量很大的话,单机压力会变得很大,所以这里我们可以使用分库分表集群模式。

2.分库分表集群模式

优点:适用于十几亿数据总量的大型应用,不具备高可用性,某一台分片服务器挂掉后,会查询不到数据。

特点:每个分片的数据都不一样。

分片的算法有:范围法和hash法。

1)范围法,非常容易理解,就是:按照范围进行分片。

优点:结构简单,拓展容易

缺点:数据分布不均衡,数据的局部负载压力大。

2)hash法


hash最有的优点就是:数据分配均衡,缺点就是:节点扩展复杂数据迁移的难度大。

所以一般采用hash算法,都会建议:提前部署足够多的节点。

3.主流的MySQL集群架构

可以采用读写分离和分片法的组合应用,如下:

MySQL集群架构原理

MySQL Cluster由一组计算机组成,每台计算机上均运行多种进程,包括MySQL服务器,管理服务器,MySQL Cluster数据节点,以及(可能)专门的数据访问应用程序。

MySQL集群架构如下所示:

MySQL 群集分为三种节点:管理节点,数据节点和SQL节点。

1.管理节点

MySQL全局的管理者,起到联系并管理整体架构的作用,整个集群只有一个管理节点,控制其他节点启停,查看节点状态等。

主要用于管理各个节点,也能够监视全部节点的工作状态。

2.数据节点

用于存储数据,集群中有多个数据节点,每个数据节点都会存储所有数据。

这样当一个数据节点宕机后,还会有其他的数据节点存储数据,系统仍然可以继续使用。

3.SQL节点

负责与WEB应用程序交互,承接来自上层的SQL命令,主要是对外提供SQL功能,类似一台普通的 MySQL Server。

在任意一个SQL节点上的命令都会在系统中生效,从而可以起到互相备份和负载分担的作用,可以防止单点故障。

本篇已经收纳于mikechen创作的《阿里架构师进阶专题合集》里面。

相关推荐

URL URI傻傻分不清楚,dart告诉你该怎么用

简介如果我们要访问一个网站,需要知道这个网站的地址,网站的地址一般被称为URL,他的全称是UniformResourceLocator。那么什么是URI呢?...

你最深爱的编程语言其实很烂

我最近写了几篇比较严肃的博客,是关于一些沮丧的事情,结果我开始有些忧郁。很严重。所以,我想应该说些比较轻松的事情。我要做的就是数落大家最喜欢的编程语言。你会问我为什么,为什么要搞这种恶作剧?亲爱的朋友...

路由器交换机基础配置6——命令行显示信息设置

一、控制命令行显示信息设备中的部分命令执行后会出现提示、警告、执行结果等显示信息,用户可以控制这些显示信息的显示方式,以方便阅读。1、提示和警告信息提供中、英文两种语言显示。可以通过language-...

python是一种什么类型的编程语言

Python(英国发音:/'paθn/美国发音:/'paθɑn/)是一种广泛使用的解释型、高级编程、通用型编程语言,由吉多·范罗苏姆创造,第一版发布于1991年。可以视之为一种改良(加入一些其他编程...

60年了,LISP语言的进化史是否会引发你对AI未来的新思考?

图:pixabay作为长期垄断AI领域的高级计算机语言程序,Lisp语言到底经过了怎样的变迁?也许,我们可能已经忘记了一些在今天仍然有用的东西,或者说,至少了解这些历史对一些新的想法产生有所影响。o2...

Java 和 JavaScript 的关系

Java和JavaScript不同之处:●出身不同:Javascript与Java是由不同的公司开发的不同产品。Javascript是Netscape公司的脚本语言,而Java...

Micro:命令行文本编辑器 (Go)

Micro是一款基于终端的文本编辑器,使用Go开发。Micro是个命令行编辑器,主要特性是易用,直观,并且包含所有现代化终端的优点。功能:易用常用快捷键绑定(ctrl-s,ctrl-c,...

7 行代码 3 分钟:从零开始实现一门编程语言

本文最初发布于MattMight的个人博客。...

码上去学海南公司:C语言到底能干什么?我列举了8种经典案例

虽然C语言执行速度极快,占用资源极少,但是它使用起来非常麻烦,完全没有Java、Python、Go、JavaScript、C#等方便和灵活,会严重拖慢项目的开发进度,所以,通常只有在“不得不”的情...

什么是 JavaScript?

本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注!作者|慕课网精英讲师然冬...

新人如何自学安卓手机软件开发?

当我们问一个人,你是做什么的,听到我是做软件开发的,不由自主就会感觉,这个人好厉害。越来越多的人投身于软件开发行业,可能有些人本身不是学这个专业的,出于对这个行业的热爱,自学软件开发。现在这个社会,多...

Android开发基础入门(一):UI与基础控件

Android基础入门前言:...

第02章 《小Z安卓程序员之路》Android Studio

不积跬步无以至千里,不积小流无以成江海!!每天进步一点点我是杨哲丶,一个梦想把科技和艺术结合在一起的程序猿!!小Z在开始查询的如何使用SVN和如何使用Git版本控制工具的时候,发现网上大部分居然是关于...

支付宝团队 | 移动客户端实战教程(iOS和Android)

今天给大家推荐一个非常好的PPT,是github在线的,是支付宝团队内部分享技术用的PPT,适合Web端和移动端的同学入门客户端开发,是我见过的最详细的《iOS&Android开发从入门到...

只需二步,就可以在win11操作系统上运行Android程序,非常简单

你想像过吗,只需几个简单的步骤即可在你的Windows电脑上运行Android应用程序。现在,在Windows11中运行安卓应用程序现在就像在手机上运行应用程序一样简单。微软和亚马逊联手打造了数千款...

取消回复欢迎 发表评论: