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

MySQL集群Cluster详解基本原理 mysql集群三种方式

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

MySQL集群Cluster原理简介

MySQL Cluster是MySQL集群的一种常用技术,也是MySQL官方提供的,多主多从结构,该技术允许在无共享的系统中部署“内存中”数据库的Cluster。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。适用于分布式计算环境下的高冗余、高实用版本。对数据库的结构和功能进行了拆分,分成了管理节点、数据存储节点和SQL节点。每个设备可以只发挥其中一部分作用,并且多个设备之间可以进行组件集群,实现冗余备份,防止单点故障。

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


MySQL集群架构如下所示:

SQL节点:对外提供访问MySQL集群的入口,该节点可以有多个。负责与WEB应用程序交互,承接来自上层的SQL命令,所有的数据节点可以起到相同的作用,在任意一个SQL节点上的命令都会在系统中生效,从而可以起到互相备份和负载分担的作用,可以防止单点故障。

数据节点:用于存储数据,集群中有多个数据节点,每个数据节点都会存储所有数据,这样当一个数据节点宕机后,还会有其他的数据节点存储数据,系统仍然可以继续使用。数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就有4个数据节点。

如图-1,集群中存在四个数据节点,分别是Node1、Node2、Node3、Node4,集群数据分区存储,其中Node1存储数据的partition 0,同时存储partition 2的一个备份副本用作冗余。其他节点类似。这样设计的好处如以下:图-2,

在这个例子中可以看出,即使group0和group1中各有一个Node故障,整个Cluster环境中也会有一份完整的数据,保证系统正常运转。

管理节点:MySQL全局的管理者,起到联系并管理整体架构的作用。整个集群只有一个管理节点,控制其他节点启停,查看节点状态等。维护了集群全局配置信息,因此在整个集群环境中应该优先于所有节点启动。Cluster中的其他节点从管理服务器检索配置信息,并请求确认管理服务器所在位置的方式。当数据节点内发生新的事件时,该节点将关于这类事件的信息发送到管理服务器上,写入到Cluster日志中。

二、NDB引擎介绍

在MySQL实现集群Cluster架构中,存储节点使用的存储引擎为NDB引擎。NDB引擎是一种分布式的基于内存的引擎,因此作为MySQL集群的Cluster架构中的存储节点,内存一定要足够大。

NDB引擎有以下优点:

  1. 基于内存存储,没有磁盘I/O瓶颈,速度快。
  2. 扩展性好,增加节点即可实现数据库集群Cluster的扩展。
  3. 冗余性好,单个节点故障,集群还可以提供服务。
  4. 高可用性:故障检测及迁移,多节点备份。
  5. 负载均衡:切换某服务访问某节点,分摊单个节点的数据库压力。

同时,NDB引擎也有以下缺点:

  1. 由于存储基于内存,因此在设备断电后数据就会丢失。
  2. 存储空间大小受内存大小限制。
  3. 多个节点分布式架构整体响应速度会受到网络影响。
  4. 脑裂:导致数据库节点彼此独立运行的集群故障称为“脑裂”。这种情况可能导致数据不一致,导致无法修复。例如当两个数据节点独立更新同一表上的同一行数据时。

相关推荐

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中运行安卓应用程序现在就像在手机上运行应用程序一样简单。微软和亚马逊联手打造了数千款...

取消回复欢迎 发表评论: