高可用(High Availabiltity)应用提供持续不间断(可用)的服务的能力

系统高可用性的评价通常用可用率表示

造成不可用的原因硬件故障(各种)

预期中的系统软硬件维护

软件缺陷(应用代码,服务程序都可能存在bug)

***,泄露,认为失误...等安全事件

对于系统来说,不可用时间是各关键组件不可用时间的总和.....

提高可用性的主要手段冗余,Redundancy

关键软硬件通过备用冗余避免故障时长时间的不可用

数据软件,硬件,存储的数据,都需要通过冗余确保故障时可替换

mysql高可用常见方案:数据库服务在冗余实现上有其特殊性

数据:服务"有状态"与数据冗余

数据库可用性考虑两部分:数据可用性,服务可用性;

实现方式多种多样,同一种数据也会有多种实现方案

可用性目标循序渐进

任何故障都不会造成数据丢失->可以较快速恢复服务(高可用)

高可用方案

1.mysql--基于共享存储的单活方案(不常用)

SAN,方案比较昂贵;因此不常用;

且数据库备用机,只是机器活着,但是没有没有起mysql服务;

因为大部分共享存储或数据库是不允许同一份数据被不同数据使用的;

本地数据通过RAID等手段保证数据安全

2.基于存储复制的数据冗余单活(不常用)

存在一定浪费,备用机器一直不在用,等待主机挂掉,才会使用备用机;

而且DRBD(两台机器间通过网络,备份数据),不是100%的保证数据不丢失;

3.基于集群提交通信协议的多主复制(一定场景适用)

基于主从复制的高可用方案

4.基于Mysql主从复制(常用,普适)

备库,在线上也会提供服务,避免浪费;

而主从复制,也保证了数据不会丢失。

mysql主从复制高可用方案需要改进的问题主从服务器各自有IP地址,发生主从切换后应用需要修改重启;如何让应用快速找到从库;VIP/DNS

人工判断主库是否故障再发起切换需要花较多时间如何自动探知;监控探知并自动VIP/DNS;

主从复制存在客观延迟,切换后可能造成事务数据丢失。由于网络延时,如何避免数据丢失。

1.为了避免应用人工修改切换IP,引入VIP(virtual ip)漂移方案:

方案二:

DNS,应用服务器,使用域名;

平时,将域名注册在主库上,而主库挂掉,将域名注册到从库就可以了;

2.为了减少人工介入处理的时间开销引入自动探活处理机制

高可用中间层与RDSVIP/DNS解决 应用切换问题

监控和管理服务器解决自动判断故障切换和VIP/DNS漂移

VIP/DNS管理+探活+主从关系切换 = 高可用中间层

透明切换管理+靠谱数据探活+使用切换 = 高可用中间层

云环境+高可用中间层+底层数据库=一种PaaS=基本RDS、

高可用中间层MHA

自动选择复制延迟最小的从节点并试图补全日志(但大部分主机故障下行不通)

通常要求两从以上,会进行主从关系切换

不提供VIP管理方案

MMM

提供了基本的VIP管理功能

适合双主配置的一对主机,不会主动切换主从关系

不支持主从数据延迟判断和补全

一般使用MHA,开源;

3.mysql主从复制延迟

为什么日志传输延迟

为什么主从复制,主从库会数据不一致;

解决方案:

mysql半同步技术:

主库一次commit,要等到主库持久化完成,以及从库也持久化完成,才给主键放回commit成功。

但是问题:

主库等待从库的时间是不可控的;

主库发现从库写不进去了,可以等待几秒,之后主库复制自动降级成异步复制;但这也可能导致数据不一致;

较完善的mysql高可用方案半同步复制+高可用中间层+VIP管理方案

高可用中间层=靠谱探活+主从切换+使用VIP管理的接口

例如:半同步复制+MHA(高可用中间层)+Keeplive(VIP管理方案)

半同步复制+RDS

总结

高可用指标至少3个9目标4个9

高可用核心就是使用冗余

数据库高可用两个部分

数据可用性--数据有状态

服务可用性

高可用方案

基于SAN方案的改进,不使用SAN设备

单活,备用机浪费

DRBD基于两台机器间通过网络备份数据,数据不能100%保证

SAN,设备昂贵

单活,备用机浪费,因为同一份数据不能被不同mysql实例使用;

本地数据可以通过RAID等手段保证

基于共享存储SAN的单活方案

基于DRBD存储复制的数据冗余单活

多主复制--mysql cluster

基于mysql主从复制(常用,普适)

备份,在线上可提供只读服务,避免浪费;

主从复制,也保证了数据不会丢失

基于mysql主从复制的问题

VIP管理方案+高可用中间层+半同步复制

使用半同步复制技术,但也要考虑到从库宕机,主库应该自动降级成异步复制;

使用监控服务器,自动靠谱探知+自动主从切换

使用VIP(virtual IP)/DNS管理方案,当发生切换是,只需要将VIP从主库漂移到从库,对应用来说是透明的。主从服务器各有IP地址,发生主从切换后应用需要修改重启;

人工判断主库是否故障,在发起切换需要时间长

主从复制存在客观延迟,切换后可能造成事务数据丢失

解决问题后的mysql高可用方案

高可用中间层

VIP/DNS管理+靠谱探活+主从关系切换=高可用中间层

云环境+高可用中间层+底层数据库=一种paas=基本RDS

MHA/MMM

MHA

自动选择复制延迟最小的从节点并试图补全日志(主机故障下行不通)

自动探活

自动主从切换

不提供VIP管理方案,但提供使用VIP方案的接口

mysql高可用架构_mysql高可用架构详解相关推荐

  1. mysql心得体会一百字_MYSQL CPU 100%实例详解

    MYSQL CPU 100%实例详解 2011/7/2 11:19:19作者:xy我要评论(0) 自己的一台主机(Windows 2003 + IIS + PHP + MYSQL )近来 MySQL ...

  2. mysql外键教程_MySQL外键使用详解

    最近有开始做一个实验室管理系统,因为分了几个表进行存储·所以要维护表间的关联··研究了一下MySQL的外键 . (1)只有InnoDB类型的表才可以使用外键,mysql默认是MyISAM,这种类型不支 ...

  3. mysql 执行计划 代价_mysql explain执行计划详解

    1).id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询. 2).select_type列常见的有: A:simple:表 ...

  4. mysql数据库导入导出_MySQL数据库导入导出详解

    MySQL数据库的导入,有两种方法:1) 先导出数据库SQL脚本,再导入:2) 直接拷贝数据库目录和文件.在不同操作系统或MySQL版本情况 1. 概述 MySQL数据库的导入,有两种方法: 1) 先 ...

  5. mysql数据库数字类型_Mysql 数据库数值类型详解

    MySQL 支持所有标准SQL 中的数值类型,其中包括严格数值类型(INTEGER.SMALLINT.DECIMAL 和NUMERIC),以及近似数值数据类型(FLOAT.REAL 和DOUBLE P ...

  6. mysql外键查询_MySQL外键使用详解

    最近有开始做一个实验室管理系统,因为分了几个表进行存储·所以要维护表间的关联··研究了一下MySQL的外键. (1)只有InnoDB类型的表才可以使用外键,mysql默认是MyISAM,这种类型不支持 ...

  7. mysql查询解析过程_MySQL查询执行过程详解

    查询是用户通过设置某些查询条件,从表或其他查询中选取全部或者部分数据,以表的形式显示数据供用户浏览.查询是一个独立的.功能强大的.具有计算功能和条件检索功能的数据库对象.MySQL数据库中,MySQL ...

  8. mysql中数字格式化_mysql中格式化数字详解

    最近因为工作的需求,需要对mysql中数字进行格式化,但发现网上的资料较少,索性自己总结一下,方便自己也帮助有需要的朋友们,下面话不多说,来一起看看详细的介绍: 一.format函数: 格式化浮点数 ...

  9. mysql show full processlist;_mysql show full processlist 详解

    Checking table 正在检查数据表(这是自动的). Closing tables 正在将表中修改的数据刷新到磁盘中,同时正在关闭已经用完的表.这是一个很快的操作,如果不是这样的话,就应该确认 ...

  10. mysql如何使用事件_MySQL事件的使用详解

    在系统管理或者数据库管理中,经常要周期性的执行某一个命令或者SQL语句.这个时候就会用到mysql事件,使用这个功能必须保证是mysql的版本是5.1以上. 1.首先要查看事件是否开启了,SHOW V ...

最新文章

  1. Dispatch 执行ABC任务,执行完成之后刷新UI,指定任务D
  2. Java基础篇:对象拷贝:clone方法 以及 序列化
  3. 6.22打包建立ISS虚拟目录,安装完运行你想运行的程序
  4. Flutter TextField 边框样式以及提示文本 、Flutter输入文本TextField
  5. 安卓学习笔记15:使用安卓应用程序资源
  6. Error: Loading chunk * failed,Vue Router懒加载报错问题解决方案
  7. AI为癌细胞杀手“染色”,辅助医生选择治疗方案 | 附论文
  8. synchronized 为什么不能使用string对象而是要使用string.intern
  9. Unit01: Servlet基础 、 HTTP协议
  10. Luogu1919 【模板】A*B Problem升级版(FFT快速傅里叶)
  11. Unity Koreographer 之 音乐制作插件介绍学习,一般使用步骤介绍(包括:一般音乐游戏制作流程简绍) 一
  12. 测试用例-----遥控器
  13. 如何快速构建千人规模的数字化研发管理系统
  14. 安徽大学计算机专业毕业论文格式,安徽大学本科毕业论文格式.doc
  15. SpiderViewer - 远程桌面客户端
  16. 河南理工大学计算机专业几本,河南理工大学是几本?河南理工大学是985或211吗...
  17. 10到100整数倍数英文怎么写
  18. onedrive学生账号无法登录win10 OneDrive客户端[账号密码错误]
  19. Unknown integral data type for ids : java.lang.String; nested exception is org.hibernate.id.Identifi
  20. android studio 遇到 app error launching怎么办?

热门文章

  1. 解决win10电脑图标变白的问题
  2. mysql 递归查询效率_mysql 递归查询
  3. element使用自定义的loading加载效果
  4. 微信开发者工具的使用记录
  5. 有名管道FIFO,进行双进程的“双向通信”
  6. PCA(主成分分析)降维方法
  7. 像素图的去像素化(Depixeling Pixel Art)
  8. 怎样调节计算机安全度,如何调整鼠标灵敏度调节小攻略
  9. Android定位实现
  10. 解决AndroidStudio虚拟机无法运行——AMD处理器