当前位置:

首页 > 编程开发 > MySQL的高可用架构技术是什么

MySQL的高可用架构技术是什么

背景说明随着信息技术的发展,企业越来越依赖于信息化管理,各业务应用的数据信息,主要存储在数据库中,企业对这些数据访问的连续性要求越来越高,为了避免因为数据的中断导致各种损失,数据库的高可用已成了企业信息化建设的重中之中。同时,对于电信、金融、能源、军工等等涉及国计民生的行业或领域的关键业务对于关键数据存储都需要高可用,必须保证数据系统7×24小时全天候运行,防止数据丢失、数据损坏。编程学习资料点击领取高可用架构介绍高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用。对于一个系

MySQL的高可用架构技术是什么

背景说明

随着信息技术的发展,企业越来越依赖于信息化管理,各业务应用的数据信息,主要存储在数据库中,企业对这些数据访问的连续性要求越来越高,为了避免因为数据的中断导致各种损失,数据库的高可用已成了企业信息化建设的重中之中。同时,对于电信、金融、能源、军工等等涉及国计民生的行业或领域的关键业务对于关键数据存储都需要高可用,必须保证数据系统7×24小时全天候运行,防止数据丢失、数据损坏。编程学习资料点击领取

高可用架构介绍

高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用。对于一个系统而言,可能包含很多模块,比如前端应用,缓存,数据库,搜索,消息队列等,每个模块都需要做到高可用,才能保证整个系统的高可用。对于数据库服务而言,高可用可能更复杂,对用户的服务可用,不仅仅是能访问,还需要有正确性保证,因此数据库的高可用需要更加认证对待。

MySQL高可用架构分类

  • MySQL实现高可用之MMM

  • MySQL实现高可用之MHA

  • MySQL实现高可用之主从架构

  • MySQL实现高可用之Cluster模式

MMM的技术分析

MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序。

  • MMM使用Perl语言开发,主要用来监控和管理MySQL Master-Master(双主)复制,虽然叫做双主复制,但是业务上同一时刻只允许对一个主进行写入,另一台备选主上提供部分读服务,以加速在主主切换时刻备选主的预热

  • MMM的监控端是会提供多个虚拟ip(vip),包括一个可写的vip,多个可读的vip,通过监管的管理,这些ip会绑定在可用的mysql上,当某一台mysql宕机时,会将vip迁移到其他mysql。

  • MMM这套脚本程序一方面实现了故障切换的功能,另一方面其内部附加的工具脚本也可以实现多个slave的read负载均衡。

  • 这个套件也能基于标准的主从配置的任意数量的从服务器进行读负载均衡,所以你可以用它来在一组居于复制的服务器启动虚拟ip,除此之外,它还有实现数据备份、节点之间重新同步功能的脚本。

MMM的基础组件分析

  • mmm_mond:监控进程,负责所有的监控工作,决定和处理所有节点角色活动。因此,脚本需要在监管上运行。

  • mmm_agentd:运行在每个msql服务器上的代理进程,完成监控的探针工作和执行简单的远端服务设置。此脚本需要在被监管机上运行。

  • mmm_control:一个简单的脚本,提供管理mmm_mond进行的命令。

MMM实现基本实现原理

MMM提供了自动和手动两种方式移除一组服务器中复制延迟较高的服务器的虚拟ip,同时它还可以备份数据,实现两节点之间的数据同步等。

MySQL本身没有提供replication failover的解决方案,通过MMM方案能实现服务器的故障转移,从而实现mysql的高可用。

MMM的使用场景

由于MMM无法完全的保证数据一致性,所以MMM适用于对数据的一致性要求不是很高,但是又想最大程度的保证业务可用性的场景。

对于那些对数据的一致性要求很高的业务,非常不建议采用MMM这种高可用架构。

  • MMM项目来自 Google:code.google.com/p/mysql-mas…

  • 官方网站为:mysql-mmm.org

MHA简介

MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司的youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。

  • MHA是一款开源的MySQL高可用程序,MHA在监控到master节点故障时,会自动提升其中拥有最新数据的slave节点成为新的master节点。

  • MHA会获取其他节点的额外信息来避免一致性方面的问题,也就是MHA会获取其他从节点中的数据信息,并将信息发给最接近主节点的从节点,这样主节点故障时会提升此从节点为主节点,而此从节点拥有其他从节点所有的数据信息。

  • MHA还提供了master节点的在线切换功能,即按需切换master/slave节点。

MHA的基础组件

MHA由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。

MHA Manager可以单独部署在独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上。

MHA的实现原理

  • MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序完全透明。

  • 在MHA自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据的不丢失,但这并不总是可行的。

  • 例如,如果主服务器硬件故障或无法通过ssh访问,MHA没法保存二进制日志,只进行故障转移而丢失了最新的数据。使用MySQL 5.5的半同步复制,可以降低数据丢失的风险。

  • MHA可以与半同步复制结合起来,如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性。

MHA的使用场景

目前MHA主要支持一主多从的架构。

  • 要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库。

  • 因为至少需要三台服务器,出于机器成本的考虑,淘宝也在该基础上进行了改造,目前淘宝TMHA已经支持一主一从。

  • 从代码层面看,MHA就是一套Perl脚本,那么相信以阿里系的技术实力,将MHA改成支持一主一从也并非难事。

MySQL主从架构

此种架构,一般初创企业比较常用,也便于后面步步的扩展

此架构特点

  1. 成本低,布署快速、方便

  2. 读写分离

  3. 还能通过及时增加从库来减少读库压力

  4. 主库单点故障

  5. 数据一致性问题(同步延迟造成)

MySQL的高可用架构技术是什么

  1. 高可用软件可使用Heartbeat,全面负责VIP、数据与DRBD服务的管理

  2. 主故障后可自动快速切换,并且从库仍然能通过VIP与新主库进行数据同步

  3. 从库也支持读写分离,可使用中间件或程序实现

MySQL的高可用架构技术是什么

MySQL Cluster概述

MySQL Cluster技术在分布式系统中为MySQL提供了冗余特性,增强了安全性,可以的提高系统的可靠性和数据的有效性。MySQL集群需要一组计算机,每台计算机可以理解为一个节点,这些节点的功能各不相同。MySQL Cluster按照功能来分,可以分为三种节点:管理节点、数据节点和SQL节点。集群中的某台计算机可以是某一个节点,也可以是两种或者三种节点的集合,这些节点组合在一起,为应用提供具有高可靠性、高性能的Cluster数据管理;

目前企业数据量越来越大,所以对MySQL的要求进一步提高,以前的大部分高可用方案通常存在一定的缺陷,例如MySQL Replication方案,Master是否存活检测需要一定的时间,如果需要主从切换也需要一定的时间,因此高可用很大的程度上依赖于监控软件和自动化管理工具。随着MySQL Cluster的不断发展,终于在性能和高可用上得到了很大的提高;

MySQL Cluster基本概念

MySQL Cluster简单地讲是一种MySQL集群的技术,是由一组计算机构成,每台计算机可以存放一个或者多个节点,其中包括MySQL服务器,DNB Cluster的数据节点,管理其他节点,以及专门的数据访问程序,这些节点组合在一起,就可以为应用提高可高性能、高可用性和可缩放性的Cluster数据管理;

MySQL Cluster的访问过程大致是这样的,应用通常使用一定的负载均衡算法将对数据访问分散到不同的SQL节点,SQL节点对数据节点进行数据访问并从数据节点返回数据结果,管理节点仅仅只是对SQL节点和数据节点进行配置管理;

理解MySQL Cluster节点

MySQL Cluster按照节点类型可以分为3种类型的节点,分别是管理节点、SQL节点、数据节点,所有的这些节点构成了一个完整的MySQL集群体系,事实上,数据保存在NDB存储服务器的存储引擎中,表结构则保存在MySQL服务器中,应用程序通过MySQL服务器访问数据,而集群管理服务器则通过管理工具ndb_mgmd来管理NDB存储服务器

【1.管理节点】

管理节点主要是用来对其他的节点进行管理。通常通过配置config.ini文件来配置集群中有多少需要维护的副本、配置每个数据节点上为数据和索引分配多少内存、IP地址、以及在每个数据节点上保存数据的磁盘路径;

管理节点通常管理Cluster配置文件和Cluster日志。Cluster中的每个节点从管理服务器检索配置信息,并请求确定管理服务器所在位置的方式。如果节点内出现新的事件的时候,节点将这类事件的信息传输到管理服务器,将这类信息写入到Cluster日志中;

一般在MySQL Cluster体系中至少需要一个管理节点,另外值得注意的是,因为数据节点和SQL节点在启动之前需要读取Cluster的配置信息,所以通常管理节点是最先启动的;

【2.SQL节点】

SQL节点简单地讲就是mysqld服务器,应用不能直接访问数据节点,只能通过SQL节点访问数据节点来返回数据。任何一个SQL节点都是连接到所有的存储节点的,所以当人任何一个存储节点发生故障的时候,SQL节点都可以把请求转移到另一个存储节点执行。通常来讲,SQL节点越多越好,SQL节点越多,分配到每个SQL节点的负载就越小,系统的整体性能就越好;

【3.数据节点】

数据节点用来存放Cluster里面的数据,MySQL Cluster在各个数据节点之间复制数据,任何一个节点发生了故障,始终会有另外的数据节点存储数据;

通常这3种不同逻辑的节点可以分布在不同的计算机上面,集群最少有3台计算机,为了保证能够正常维护集群服务,通常将管理节点放在一个单独的主机上。

本文内容来源于互联网,如有侵权请联系删除。
作者最新文章
编程开发
相关文章 更多
using namespace 使用中遇到的问题怎么解决
using namespace 使用中遇到的问题怎么解决

命名空间的基本概念与常见引入问题在C++等编程语言中,命名空间(namespace)是一种将代码标识符(如变量、函数、类名)封装在特定名称下的机制,其主要目的是避免命名冲突,尤其是在大型项目或使用多个第三方库时。使用“using namespace”指令可以将指定命名空间中的所有名称引入当前作用域,

c语言函数递归 实操经验总结:这些技巧很实用
c语言函数递归 实操经验总结:这些技巧很实用

理解递归的基本原理在C语言中,递归是一种函数调用自身的编程技术。要掌握它,首先需要理解其核心思想:将一个复杂的大问题,分解为一个或几个与原问题相似但规模更小的子问题,直到子问题足够简单,可以直接求解。这个过程通常包含两个关键部分:递归出口和递归体。递归出口定义了问题何时不再继续分解,即最简单、可直接

c语言函数递归 怎么选?常见方案对比分析
c语言函数递归 怎么选?常见方案对比分析

递归函数的基本概念与适用场景在C语言编程中,递归是一种函数调用自身的编程技巧。它并非适用于所有问题,但在处理某些具有自相似结构的问题时,能提供极其清晰和优雅的解决方案。递归的核心思想是将一个大规模问题分解为一个或多个同类型但规模更小的子问题,直到子问题简单到可以直接求解。典型的适用场景包括树形结构的

Objective-C 内存管理入门:从 alloc 到 dealloc 的生命周期详解
Objective-C 内存管理入门:从 alloc 到 dealloc 的生命周期详解

理解内存管理的基石在Objective-C的编程世界中,内存管理是开发者必须掌握的核心技能之一。它直接关系到应用的性能、稳定性与资源利用效率。与一些采用自动垃圾回收机制的语言不同,Objective-C在很长一段时间里,依赖一套基于引用计数的、需要开发者部分介入的管理规则。这套规则的核心思想是明确的

如何正确使用 dealloc 以避免 iOS 应用中的内存泄漏
如何正确使用 dealloc 以避免 iOS 应用中的内存泄漏

理解 dealloc 的角色与时机在 iOS 应用开发中,内存管理是保障应用性能与稳定性的基石。dealloc 方法是 Objective-C 中对象生命周期结束时的关键回调,它标志着对象即将被系统回收内存。正确理解其触发时机至关重要:当一个对象的引用计数降为零时,运行时系统会自动调用该对象的 de

深入理解 Objective-C 中的 dealloc 方法:内存管理核心机制
深入理解 Objective-C 中的 dealloc 方法:内存管理核心机制

内存管理的基石在Objective-C的世界里,内存管理是开发者必须掌握的核心技能之一。作为一门在手动引用计数(MRC)时代诞生的语言,Objective-C要求程序员对对象的生命周期有清晰的认识。dealloc方法正是这一生命周期中至关重要的终点站。它是一个实例方法,当对象的引用计数降为零时,系统

理解 native2ascii:Java 国际化开发中的字符编码工具
理解 native2ascii:Java 国际化开发中的字符编码工具

native2ascii 工具的基本定位在Ja va应用程序的国际化与本地化开发过程中,处理非拉丁字符集是一个常见且关键的环节。Ja va内部使用Unicode字符集来统一表示全球各种语言的文字,但其属性文件(.properties)在历史上要求使用ASCII编码,或者更准确地说,要求非ASCII字

如何使用 native2ascii 转换中文字符为 Unicode 转义序列
如何使用 native2ascii 转换中文字符为 Unicode 转义序列

理解 native2ascii 工具的基本用途在软件开发,特别是涉及国际化处理的场景中,开发者常常需要处理不同编码的文本资源。native2ascii 是 Ja va 开发工具包(JDK)中提供的一个命令行实用程序,其主要功能是将包含本地字符编码(非ASCII字符)的文件,转换为包含 Unicode

Java native2ascii 命令详解:解决属性文件乱码问题
Java native2ascii 命令详解:解决属性文件乱码问题

native2ascii 命令的由来与作用在Ja va开发中,处理国际化资源文件是一个常见需求。资源文件通常以.properties格式存储,用于支持多语言界面。然而,Ja va属性文件默认采用ISO-8859-1字符集编码,这导致了一个直接的问题:当文件中包含非拉丁字符(如中文、日文、韩文等)时,

一个 memwatch 实战案例:定位野指针问题
一个 memwatch 实战案例:定位野指针问题

内存监控工具的价值与挑战在软件开发,尤其是使用C/C++这类手动管理内存的语言时,内存错误是程序员最常遭遇的难题之一。其中,野指针问题因其隐蔽性和破坏性,往往成为最难定位的“幽灵”缺陷。它可能潜伏在代码中,在特定条件下才被触发,导致程序崩溃、数据损坏或难以预测的行为。传统的调试手段,如打印日志或使用

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件
macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

Mac软件 更多
灵活计算器
灵活计算器
macOS/iOS/Android

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师
macOS

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

WINDOWS 更多
Windows 10
Windows 10
Windows

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘
Windows/macOS/iOS/Android

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。