MySQL-高可用架构探索

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: MySQL-高可用架构探索

20200129003012618.png

生猛干货

带你搞定MySQL实战,轻松对应海量业务处理及高并发需求,从容应对大场面试


官方文档

https://dev.mysql.com/doc/

20200131202811239.png


如果英文不好的话,可以参考 searchdoc 翻译的中文版本

http://www.searchdoc.cn/rdbms/mysql/dev.mysql.com/doc/refman/5.7/en/index.com.coder114.cn.html


20200131203226295.png

前置学习

要掌握高可用架构,必须先了解主从架构: MySQL-主从架构探索


什么是高可用( HA - High Availability )


通过尽量缩短因日常维护操作(计划内) 和 突发的系统崩溃 (非计划)所导致的停机时间,以提高系统的可用性,这就是高可用 。


举个例子: 主从同步延时太厉害、主从中断、锁表造成大量的阻塞 等等因素都造成了应用的不可用,这些都是影响高可用的因素


其实真正做到100%的可用还是比较困难的,我们经常说到的 5个9 (99.999%)的可用 是啥意思呢?


做到 5个9的可用性,那允许停服多长时间呢? 我们来算下


(365 * 24 * 60) * (1 - 0.99999) = 5.256 分钟, 一年停服时长小于5分钟。


4个9呢?


(365 * 24 * 60) * (1 - 0.9999) = 52. 56 分钟 (1个小时左右)


3个9呢?


(365 * 24 * 60) * (1 - 0.999) = 525.6 分钟 (9个小时左右)


可用性越高,实现的成本相对就高, 实际情况根据我们的业务和项目成本来考量。


实现高可用的几点原则


避免系统不可用的因素减少系统不可用的时间


比如服务器磁盘空间不足、表结构和索引没有优化、主从不一致、性能糟糕的SQL、人为操作失误等等


主要的措施:


建立完善的监控和告警系统


1)备份!!!并对备份数据定期进行恢复测试,以便备份数据在紧急情况恢复数据时可用

2)正确的配置数据库环境,特别是从库环境,read_only一定要开启。

3)对不需要的数据进行归档和清理


增加系统冗余,确保发生故障时可以尽快的切到另外的节点恢复


主要的措施有:


避免存在单点故障


主从切换及故障转移


这里我们主要如何解决探讨MySQL的单点故障


避免MySQL单点故障的几种方案

使用SUN共享存储



20200201133903890.png

共享存储 也有单点问题,而且共享存储的随机I/O不是很理想,虽然能实现,但不是一种好的解决MySQL单点故障的方案。


使用DRDB磁盘复制


20200201134028972.png


提供远程镜像磁盘,数据是由冗余的,没有单点问题,但成本较高 。


使用用多写集群(PXC方案)


20200201134228273.png

集群中的节点全部提交才提交。集群的性能取决于集群中机器配置最低的那台主机的性能。

写入性能比单节点的写入性能差, 而且 PXC仅支持Innodb储存引擎。

这个玩意很强大,需要深入学习,淘宝等很多大厂有基于这个的定制,很好用,但得学会 。


使用NDB集群


这玩意所有的数据存在内存中,如果内存不足,NDB集群的性能就会非常差。 很少在生产环境中使用。


使用MySQL的主从复制


说到使用MySQL主从复制来解决MySQL的单点问题,其核心在于如何解决主节点的单点问题。

要保证主节点高可用,有几点 需要解决

  • 主服务器切换后,如何通知应用新的主服务器的IP地址
  • 如何检查MySQL主服务器是否可用
  • 如何处理从服务器和新主服务器之间的那种复制关系

通常都会使用第三方的复制管理组件 , 主流的MMM 和 MHA ,接下来我们就重点来看下这两种复制管理组件。


MMM (Multi-Master Replication Manager )


学习这个之前,需要知道,这个玩意很少有人用了,这个项目好多年都不维护了,了解即可。 有精力可以重点掌握MHA这种架构。

多主复制器, perl语言开发的


MMM的主要作用


监控和管理MySQL的主主复制拓扑,并在当前的主服务器失效的时候,进行主和主备服务器之间的主从切换和故障转移。


MMM提供的功能


主主复制 分为两种模式

  • 主动-主动模式的主主复制 (两个主节点都对外提供读写服务)
  • 主动-被动模式的主主复制(仅一个节点对外提供读写服务)


MMM是 主动-被动模式的主主复制的模式

  • MMM监控MySQL主从复制的健康状况
  • 在主库宕机时进行故障转移并自动配置其他从对新主的复制

这里的内容就比较多了: 比如如何找到从库对应的新主库日之巅的日志同步点, 如何存在多个从库出现数据不一致的情况如何处理 —> MMM采取的方案: 找到当前主库的同步点进行同步,所以有数据丢失的可能

  • 提供了主、写虚拟IO,在主从服务器出现问题的时候可以自动迁移虚拟IP

MMM架构图



20200201142847500.png


因为同一时间点只能有一个主节点提供读写服务,所以第二个主节点画成了虚线。

MMM监控各个服务器的状态,需要在每台服务器上安装 监控服务器。


MMM部署需要的资源


20200201142944206.png


MMM架构安装和部署

这一部分暂时留空,因为MMM架构使用较少,暂不整理。


MMM架构的优缺点

优点 :


开源,使用perl语言开发

提供了读写VIP(虚拟IP),使得服务器交涉的变更对前端应用透明。应用访问DB都是访问的虚拟IP,而非真实的物理IP。 在从服务器出现大量的主从延迟,主从链路中断时可以把这台从服务器上的读的虚拟IP,漂移到集群中其他正常的服务器上。

MMM提供了从服务器的延迟监控。监控后,有故障可以自动漂移VIP

MMM提供了主服务器故障转移后从服务器对新主的重新同步功能

很容易对发生故障的主数据库重新上线

监控服务器可以监控多个MMM集群


缺点 :


最新版本10年发布的,十年了。。。。有部分bug未修复

不支持MySQL5.6以后的提供的GTID同步方式,仅支持基于binlog的同步

不支持MySQL5.6以后的提供的多线程同步技术

没有读负载的功能

主从切换时,容易造成数据丢失

MMM监控服务存在单点故障,避免的监控服务单点,需要自行实现。


MHA (Master High Availability)

同MMM一样, 也是perl语言开发


架构


20200201145558461.png


当主节点发生故障时,会在从节点中选举出一个主节点,继续提供服务。 切高效的完成主从切换,尽最大可能保证数据一致。

MHA支持 基于GTID的复制 ,GTID复制更安全。

MMM不支持 基于GTID的复制


MHA提供的功能


  • 监控主数据库服务器是否可用
  • 当主DB不可用时,从多个从服务器中选举新的主数据库服务器
  • 提供主从切换和故障转移功能 。

MHA可以和半同步结合起来使用。


MHA主从切换过程


  • 尝试从出现故障的主数据库保存二进制日志到其他节点 (需要配置ssh免密)
  • 从多个备选从服务器中选举出新的备选主服务器
  • 在备选服务器和其他从服务器之间同步差异的二进制数据
  • 应用从原主DB上保存的二进制日志
  • 提升备选DB服务器为新的主服务器
  • 迁移集群中的其他从DB作为新的DB的从服务器


MHA配置的步骤


配置集群内所有的主机的SSH免认证登录

安装MHA-node软件包(每个节点都要安装) 和MHA-manager 软件包

建立主从复制集群 (推荐使用基于GTID的复制)

配置MHA管理节点

使用masterha_check_ssh和 masterha_check_repl对配置进行校验

启用并测试MHA服务


MHA的安装和部署

基于以下架构来演示


20200201150433921.png


篇幅太大,单独补充


MHA的优缺点

优点

  • 开源 ,perl语言开发,提供了脚本接口
  • 支持GTID的复制模式
  • MHA故障转移中不容易丢失数据
  • 同一个监控节点可以监控多个集群

缺点

  • 需要编写脚本或者利用第三方工具来实现VIP的配置
  • MHA启动后只监控主数据库
  • 需要基于SSH免认证,存在一定的安全隐患
  • 也没有同从服务器的读的负载功能

搞定MySQL


https://artisan.blog.csdn.net/article/details/104130677?spm=1001.2014.3001.5502


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
3月前
|
运维 监控 关系型数据库
MySQL高可用方案:MHA与Galera Cluster对比
本文深入对比了MySQL高可用方案MHA与Galera Cluster的架构原理及适用场景。MHA适用于读写分离、集中写入的场景,具备高效写性能与简单运维优势;而Galera Cluster提供强一致性与多主写入能力,适合对数据一致性要求严格的业务。通过架构对比、性能分析及运维复杂度评估,帮助读者根据自身业务需求选择最合适的高可用方案。
|
3月前
|
SQL 监控 关系型数据库
MySQL主从复制:构建高可用架构
本文深入解析MySQL主从复制原理与实战配置,涵盖复制架构、监控管理、高可用设计及性能优化,助你构建企业级数据库高可用方案。
|
4月前
|
运维 监控 搜索推荐
MSE ZooKeeper:Flink 高可用架构的企业级选择
本文深入解析了 Apache Flink 架构中 ZooKeeper 的核心作用,包括 Leader 选举、Checkpoint 管理、作业协调及配置管理等关键功能,并结合金融风控与电商推荐等典型场景,分析了 ZooKeeper 在实际应用中的技术实现。
|
7月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
2月前
|
运维 监控 安全
公链开发中的高可用架构设计要点
本指南提供公链高可用架构的可复用流程与模板,涵盖目标拆解、先决条件、分步执行、故障排查及验收标准,结合跨链DApp与量化机器人案例,提升落地效率与系统稳定性。
|
3月前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
7月前
|
监控 Linux 应用服务中间件
Linux多节点多硬盘部署MinIO:分布式MinIO集群部署指南搭建高可用架构实践
通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考MinIO 官方文档。作者联系方式vx:2743642415。
2564 57
|
5月前
|
文字识别 运维 监控
架构解密|一步步打造高可用的 JOCR OCR 识别服务
本文深入解析了JOCR OCR识别服务的高可用架构设计,涵盖从用户上传、智能调度、核心识别到容错监控的完整链路,助力打造高性能、低成本的工业级OCR服务。
264 0
架构解密|一步步打造高可用的 JOCR OCR 识别服务
|
6月前
|
关系型数据库 MySQL 分布式数据库
Super MySQL|揭秘PolarDB全异步执行架构,高并发场景性能利器
阿里云瑶池旗下的云原生数据库PolarDB MySQL版设计了基于协程的全异步执行架构,实现鉴权、事务提交、锁等待等核心逻辑的异步化执行,这是业界首个真正意义上实现全异步执行架构的MySQL数据库产品,显著提升了PolarDB MySQL的高并发处理能力,其中通用写入性能提升超过70%,长尾延迟降低60%以上。
|
8月前
|
消息中间件 存储 设计模式
RocketMQ原理—5.高可用+高并发+高性能架构
本文主要从高可用架构、高并发架构、高性能架构三个方面来介绍RocketMQ的原理。
2912 21
RocketMQ原理—5.高可用+高并发+高性能架构

推荐镜像

更多