MySQL-高可用架构探索
文章目录
- 生猛干货
- 官方文档
- 前置学习
- 什么是高可用( HA - High Availability )
- 实现高可用的几点原则
- 避免MySQL单点故障的几种方案
- 使用SUN共享存储
- 使用DRDB磁盘复制
- 使用用多写集群(PXC方案)
- 使用NDB集群
- 使用MySQL的主从复制
- MMM (Multi-Master Replication Manager )
- MMM的主要作用
- MMM提供的功能
- MMM架构图
- MMM部署需要的资源
- MMM架构安装和部署
- MMM架构的优缺点
- MHA (Master High Availability)
- 架构
- MHA提供的功能
- MHA主从切换过程
- MHA配置的步骤
- MHA的安装和部署
- MHA的优缺点
- 搞定MySQL
生猛干货
带你搞定MySQL实战,轻松对应海量业务处理及高并发需求,从容应对大场面试
官方文档
https://dev.mysql.com/doc/
如果英文不好的话,可以参考 searchdoc 翻译的中文版本
http://www.searchdoc.cn/rdbms/mysql/dev.mysql.com/doc/refman/5.7/en/index.com.coder114.cn.html
前置学习
要掌握高可用架构,必须先了解主从架构: 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共享存储
共享存储 也有单点问题,而且共享存储的随机I/O不是很理想,虽然能实现,但不是一种好的解决MySQL单点故障的方案。
使用DRDB磁盘复制
提供远程镜像磁盘,数据是由冗余的,没有单点问题,但成本较高 。
使用用多写集群(PXC方案)
集群中的节点全部提交才提交。集群的性能取决于集群中机器配置最低的那台主机的性能。
写入性能比单节点的写入性能差, 而且 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架构图
因为同一时间点只能有一个主节点提供读写服务,所以第二个主节点画成了虚线。
MMM监控各个服务器的状态,需要在每台服务器上安装 监控服务器。
MMM部署需要的资源
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语言开发
架构
当主节点发生故障时,会在从节点中选举出一个主节点,继续提供服务。 切高效的完成主从切换,尽最大可能保证数据一致。
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的安装和部署
基于以下架构来演示
篇幅太大,单独补充
MHA的优缺点
优点
- 开源 ,perl语言开发,提供了脚本接口
- 支持GTID的复制模式
- MHA故障转移中不容易丢失数据
- 同一个监控节点可以监控多个集群
缺点
- 需要编写脚本或者利用第三方工具来实现VIP的配置
- MHA启动后只监控主数据库
- 需要基于SSH免认证,存在一定的安全隐患
- 也没有同从服务器的读的负载功能
搞定MySQL
MySQL-高可用架构探索相关推荐
- 探索MySQL高可用架构之MHA(6)
探索MySQL高可用架构之MHA(6) -----构建mysql高可用系列(共9篇) 上一篇文章介绍了本次架构的Atlas读写分离! 本篇文章主要介绍本次架构中的keepalive部分! 什么是Kee ...
- 从mysql高可用架构看高可用架构设计
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%.如果 ...
- MySQL 高可用架构在业务层面的应用分析
MySQL 高可用架构在业务层面的应用分析 http://mp.weixin.qq.com/s?__biz=MzAxNjAzMTQyMA==&mid=208312443&idx=1&a ...
- 第5章 MySQL高可用架构设计
第5章 MySQL高可用架构设计 数据库复制 复制解决了什么问题????? 非共享架构 二进制日志 binlog工具 查看日志格式 show variables like "binlog_f ...
- 搭建MySQL高可用架构MHA
搭建MySQL高可用架构MHA v1.0 MHA简介 MHA的主要目的是自动化master故障转移和slave自动提升为master,在较短时间(一般为10-30秒)的停机时间,可以避免复制和一致性问 ...
- Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节 【转】
文章出处:Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节 [转] mysql数据库高可用高扩展性架构方案实施[原] Heartbeat+DRBD+MySQ ...
- MySQL高可用架构InnoDB Cluster (和NDB Cluster是两码事)
MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, Galera Cluster, InnoDB Cluste ...
- Mysql进阶(4)——基于MHA的MySQL高可用架构
前言 MySQL高可用性大杀器之MHA MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职 ...
- MySQL 高可用架构 之 MHA (Centos 7.5 MySQL 5.7.18 MHA 0.58)
目录 简介 环境准备 秘钥互信 安装基础依赖包 安装MHA组件 安装 MHA Node组件 安装 MHA Manager 组件 建立 MySQL 一主三从 初始化 MySQL 启动MySQL 并简单配 ...
- MySQL高可用架构对比
MMM与MHA以及MGR,高可用架构都有如下的共同点: 对主从复制集群中的Master节点进行监控 自动的对Master进行迁移,通过VIP. 重新配置集群中的其它slave对新的Master进行同步 ...
最新文章
- LeetCode 860.柠檬水找零(C++)
- Cannot load onnxruntime.capi. Error: DLL load failed: 找不到指定的模块
- JavaFX即将推出您附近的Android或iOS设备吗?
- python自动化教程_Python 任务自动化工具 tox 教程
- redis监控工具_企业级别Redis监控,细化到每个项目实例
- MySql 把B表数据插入到A表中
- 赤池信息量准则 ( Akaike information criterion)-统计学术语
- c语言单项选择题标准化考试系统,c语言课程设计(单项选择题标准化考试系统)分析报告.doc...
- Java微信小程序的授权登陆
- hdu 2087 剪花布条 kmp小水
- 建立一个学生的简单信息表 c语言,简单的学生信息表
- 语句摘抄——第28周
- 般若波罗蜜多心经——背过最好了
- C#基础编程——简介及基础语法
- 《全心全意地投入》——英文小译二【英文短篇正能量】
- DRV10983驱动无刷电机调试过程与踩坑记录
- 流量劫持是如何产生的
- 网络计算机自动巡检,奇辉巡检机器人 公安巡检机器人 自动巡检报警 安防监控报警...
- 使用SVM分类器做颜色分类走过的坑
- 方波信号发生器电路仿真,小波神经网络算法原理
热门文章
- java 之选择排序与冒号排序的详解
- pycharm的安装与python解释器的安装,pip环境变量的配置要不然使用pip时报不是内部命令
- C++用顶层函数重载操作符(三)用友元优化
- const那些事-初始化
- 104. Leetcode 337. 打家劫舍 III (动态规划-打家劫舍)
- 机器学习笔记:Transformer
- 禁忌搜索算法求解带时间窗的车辆路径问题原理讲解
- Elasticsearch 使用过程中有哪些坑?教你避开这些坑
- Excel:5种判断奇数和偶数的方法
- 深度学习100例 | 第24天-卷积神经网络(Xception):动物识别