mysql高可用架构
- 应用提供持续不间断(可用)的服务的能力
- 系统高可用性的评价通常用可用率表示
.png)
- 硬件故障(各种)
- 预期中的系统软硬件维护
- 软件缺陷(应用代码,服务程序都可能存在bug)
- 攻击,泄露,认为失误...等安全事件
- 对于系统来说,不可用时间是各关键组件不可用时间的总和.....
- 冗余,Redundancy
- 关键软硬件通过备用冗余避免故障时长时间的不可用
- 数据软件,硬件,存储的数据,都需要通过冗余确保故障时可替换
.png)

- 数据库服务在冗余实现上有其特殊性
- 数据:服务"有状态"与数据冗余
- 数据库可用性考虑两部分:数据可用性,服务可用性;
- 实现方式多种多样,同一种数据也会有多种实现方案
- 可用性目标循序渐进
- 任何故障都不会造成数据丢失->可以较快速恢复服务(高可用)
.png)

- SAN,方案比较昂贵;因此不常用;
- 且数据库备用机,只是机器活着,但是没有没有起mysql服务;
- 因为大部分共享存储或数据库是不允许同一份数据被不同数据使用的;
- 本地数据通过RAID等手段保证数据安全

.png)
- 存在一定浪费,备用机器一直不在用,等待主机挂掉,才会使用备用机;
- 而且DRBD(两台机器间通过网络,备份数据),不是100%的保证数据不丢失;
.png)
.png)
- 备库,在线上也会提供服务,避免浪费;
- 而主从复制,也保证了数据不会丢失。
- 主从服务器各自有IP地址,发生主从切换后应用需要修改重启;
- 如何让应用快速找到从库;VIP/DNS
- 人工判断主库是否故障再发起切换需要花较多时间
- 如何自动探知;监控探知并自动VIP/DNS;
- 主从复制存在客观延迟,切换后可能造成事务数据丢失。
- 由于网络延时,如何避免数据丢失。
.png)
.png)

.png)

- VIP/DNS解决 应用切换问题
- 监控和管理服务器解决自动判断故障切换和VIP/DNS漂移
- VIP/DNS管理+探活+主从关系切换 = 高可用中间层
- 透明切换管理+靠谱数据探活+使用切换 = 高可用中间层
- 云环境+高可用中间层+底层数据库=一种PaaS=基本RDS、
- MHA
- 自动选择复制延迟最小的从节点并试图补全日志(但大部分主机故障下行不通)
- 通常要求两从以上,会进行主从关系切换
- 不提供VIP管理方案
- MMM
- 提供了基本的VIP管理功能
- 适合双主配置的一对主机,不会主动切换主从关系
- 不支持主从数据延迟判断和补全
.png)

.png)

- 半同步复制+高可用中间层+VIP管理方案
- 高可用中间层=靠谱探活+主从切换+使用VIP管理的接口
- 半同步复制+MHA(高可用中间层)+Keeplive(VIP管理方案)
- 半同步复制+RDS
- 高可用指标至少3个9目标4个9
- 高可用核心就是使用冗余
- 数据库高可用两个部分
- 数据可用性--数据有状态
- 服务可用性
- 高可用方案
- 基于共享存储SAN的单活方案
- SAN,设备昂贵
- 单活,备用机浪费,因为同一份数据不能被不同mysql实例使用;
- 本地数据可以通过RAID等手段保证
- 基于DRBD存储复制的数据冗余单活
- 基于SAN方案的改进,不使用SAN设备
- 单活,备用机浪费
- DRBD基于两台机器间通过网络备份数据,数据不能100%保证
- 多主复制--mysql cluster
- 基于mysql主从复制(常用,普适)
- 备份,在线上可提供只读服务,避免浪费;
- 主从复制,也保证了数据不会丢失
- 基于mysql主从复制的问题
- 主从服务器各有IP地址,发生主从切换后应用需要修改重启;
- 使用VIP(virtual IP)/DNS管理方案,当发生切换是,只需要将VIP从主库漂移到从库,对应用来说是透明的。
- 人工判断主库是否故障,在发起切换需要时间长
- 使用监控服务器,自动靠谱探知+自动主从切换
- 主从复制存在客观延迟,切换后可能造成事务数据丢失
- 使用半同步复制技术,但也要考虑到从库宕机,主库应该自动降级成异步复制;
- 解决问题后的mysql高可用方案
- VIP管理方案+高可用中间层+半同步复制
- 高可用中间层
- VIP/DNS管理+靠谱探活+主从关系切换=高可用中间层
- 云环境+高可用中间层+底层数据库=一种paas=基本RDS
- MHA/MMM
- MHA
- 自动选择复制延迟最小的从节点并试图补全日志(主机故障下行不通)
- 自动探活
- 自动主从切换
- 不提供VIP管理方案,但提供使用VIP方案的接口
mysql高可用架构的更多相关文章
- mysql高可用架构之MHA,haproxy实现读写分离详解
MySQL高可用架构之MHA 一.运维人员需要掌握的MySQL技术: 1.基本SQL语句 2.基本的管理[库表数据的管理 权限的管理] 3.容灾 保证数据不丢失. 二.工作中MySQ ...
- MySQL高可用架构之Mycat-关于Mycat安装和参数设置详解
MySQL高可用架构之Mycat-关于Mycat安装和参数设置详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Mycat介绍 1>.什么是Mycat Mycat背后是 ...
- 032:基于Consul和MGR的MySQL高可用架构
目录 一.Consul 1.Consul简介 2.准备环境 3.Consul 安装 4.Consul配置文件 5.Consul 服务检查脚本 6.Consul启动 二.MGR搭建 1.MGR配置 2. ...
- (转)MySQL高可用架构之MHA
MySQL高可用架构之MHA 原文:http://www.cnblogs.com/gomysql/p/3675429.html 简介: MHA(Master High Availability)目前 ...
- MySQL 高可用架构在业务层面的应用分析
MySQL 高可用架构在业务层面的应用分析 http://mp.weixin.qq.com/s?__biz=MzAxNjAzMTQyMA==&mid=208312443&idx=1&a ...
- 从mysql高可用架构看高可用架构设计
高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%.如果 ...
- MySQL高可用架构应该考虑什么? 你认为应该如何设计?
一.MySQL高可用架构应该考虑什么? 对业务的了解,需要考虑业务对数据库一致性要求的敏感程度,切换过程中是否有事务会丢失 对于基础设施的了解,需要了解基础设施的高可用的架构.例如 单网线,单电源等情 ...
- MySQL高可用架构之MySQL5.7组复制MGR
MySQL高可用架构之MySQL5.7组复制MGR########################################################################### ...
- MySQL高可用架构之MHA
简介: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是 ...
- MySQL 高可用架构之MMM
简介 MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序.MMM使用Perl语言开发,主要用来监控和管理My ...
随机推荐
- activity 和 生命周期 :流程
activity是android的一个基本的组件.讨论生命周期,taskstack等等的话题的时候.就不得不去看一下android framework层的源码了. 生命周期,实际就是系统调用andro ...
- Scalding初探之二:动手来做做小实验
输入文件 Scalding既可以处理HDFS上的数据,也可以很方便地在本地运行处理一些test case便于debug,Source有好多种 1 TextLine(filename) TextLine ...
- C++模板中的函数对象
在C++模板类map中一个参数为Compare类型,该类型为一个比较函数,其完整定义如下: template< class Key, class T, class Compare = std:: ...
- poj 3463 最短路与次短路的方案数求解
Sightseeing Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8968 Accepted: 3139 Descr ...
- postman 添加环境变量 并 读取变量 作为参数 传入,跑整个场景
上篇文章 写了 postman 基本使用 和 检查点. 这篇 记录一下 多个测试用例组成的一个场景下. 如何通过读取变量跑完整个场景. 因为有些场景 的用例是彼此关联的. 所以通过参数来实现. 如 我 ...
- DHCP服务器安装及配置
一.什么是DHCP? DHCP (Dynamic Host Configuration protocol)动态主机设置协议,基于UDP(发送很小的数据报文,且对时效性要求较高)协议通信. 它是C/S架 ...
- Android——数据存储(课堂代码整理:SharedPreferences存储和手机内部文件存储)
layout文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:an ...
- Android Listview 性能优化
首先我一般使用的适配器是BaseAdapter,其中有两个方法最主要,分别是: getCount,getView, 在对Listview 进行优化的时候,首先使用 convertview 和viewH ...
- byte与char的区别
byte 是字节数据类型 ,是有符号型的,占1 个字节:大小范围为-128—127 .char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 ):大小范围 是0—65535 :char ...
- MySQL各逻辑模块工作配合
在了解了MySQL的各个模块之后(点击查看MySQL各个逻辑模块),我们再看看MySQL各个模块间是如何相互协同工作的.接下来,我们通过启动MySQL,客户端连接,请求query,得到返回结果,到最后 ...