• 技术文章 >数据库 >mysql教程

    一起分析MySQL的高可用架构技术

    长期闲置长期闲置2022-02-22 18:12:13转载102
    本篇文章中给大家带来了关于mysql中高可用架构技术分析的相关知识,其中主要介绍了MMM的技术分析、MySQL主从架构以及Cluster的相关问题,希望对大家有帮助。

    背景说明

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

    高可用架构介绍

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

    MySQL高可用架构分类

    MMM的技术分析

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

    MMM的基础组件分析

    MMM实现基本实现原理

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

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

    MMM的使用场景

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

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

    MHA简介

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

    MHA的基础组件

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

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

    MHA的实现原理

    MHA的使用场景

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

    MySQL主从架构

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

    此架构特点

    1. 成本低,布署快速、方便
    2. 读写分离
    3. 还能通过及时增加从库来减少读库压力
    4. 主库单点故障
    5. 数据一致性问题(同步延迟造成)

    1. 高可用软件可使用Heartbeat,全面负责VIP、数据与DRBD服务的管理
    2. 主故障后可自动快速切换,并且从库仍然能通过VIP与新主库进行数据同步
    3. 从库也支持读写分离,可使用中间件或程序实现

    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台计算机,为了保证能够正常维护集群服务,通常将管理节点放在一个单独的主机上;

    推荐学习:mysql视频教程

    以上就是一起分析MySQL的高可用架构技术的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除
    专题推荐:mysql
    上一篇:linux下怎么停止mysql服务 下一篇:MySQL学习之聊聊流程控制和游标
    PHP编程就业班

    相关文章推荐

    • mysql什么是临时表• 什么是mysql慢查询• mysql怎么修改事务隔离级别• hbase与mysql的区别是什么• 完全掌握MySql之写入Binary Log的流程

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网