12、高可用性

什么是高可用性

高可用性不是绝对的,只有相对更高的可用性。百分之百的可用性是不可能达到的。可用性的定义不仅仅包括服务正在运行的时间段,还包括应用是否能以足够好的性能处理请求。

导致宕机的原因

  1. 在运行环境的问题中,最普通的问题是磁盘空间耗尽
  2. 在性能问题中,最普遍的宕机原因是运行糟糕的SQL
  3. 糟糕的schema和索引设计是第二大影响性能的问题
  4. 复制问题通常是由于主备数据不一致
  5. 数据丢失问题通常是由于 DROP TABLE 的误操作导致,并总是伴随着缺少可用备份的问题

如何实现高可用性

首先可以尝试避免导致宕机的原因来减少宕机时间。其次尽量保证在发生宕机时能够快速恢复。最常见的策略就是在系统中制造冗余,具备故障转移能力。

提升平均失效时间

其实只要尽职尽责地做好一些应做的事情,就可以避免很多宕机的情况。大部分的宕机事件都是可以通过全面的常识性系统管理办法来避免。例如:

  1. 测试恢复工具和流程,包括从备份中恢复数据
  2. 遵从最小权限原则
  3. 保持系统干净、整洁等等

降低平均恢复时间

一个能够提供冗余和故障转移的系统架构,则是降低恢复时间的关键环节。

避免单点失效

找到并消除系统中的可能失效的单点,并结合切换到备用组件的机制,这是一种通过减少恢复时间来改善可用性的方法。

共享存储或磁盘复制

共享存储有两个优点:可以避免除存储外的其他任何组件失效所引起的数据丢失,并为非存储组件建立冗余提供可能。因此他有助于减少系统一些部分的可用性需求,这样就可以集中精力关注一小部分组件来获得高可用性。不过共享存储本身也是有可能失效的,如果共享存储失效了,那整个系统也失效了。
共享存储本身也有风险,如果Mysql崩溃等故障导致数据文件损坏,可能会导致备用服务器无法恢复。所以建议使用共享存储策略时选择InnoDB存储引擎或其他稳定的ACID存储引擎。
Mysql中最普遍使用的磁盘复制技术是DRBD。主要有以下几个缺点:

  1. DRBD的故障转移无法做好秒级以内。2. 成本很昂贵,必须在主动-被动模式下运行。3. 对于MyISAM表实际上用处不大,因为MyISAM表崩溃后需要花费很长时间来检查和修复。4. DRBD无法替代备份。5. 对写操作而言增加了负担。

Mysql同步复制

当使用同步复制时,主库上的事务只有在至少一个备库上提交后才能认为其执行完成。这实现了两个目标:当服务器崩溃时没有提交的事务会丢失,并且至少有一个备库拥有实时的数据副本。大多数同步复制架构运行在主动-主动模式,这意味着每个服务器在任何时候都是故障转移的候选者。这使得通过冗余获得高可用性更加容易。

基于复制的冗余

复制管理器是使用标准Mysql复制来创建冗余的工具。尽管可以通过复制来改善可用性,但也有有一些限制会阻止Mysql当前版本的异步复制和半同步复制获得和真正的同步复制相同的结果。

故障转移和故障恢复

冗余是很好的技术,但实际上只有在遇到故障需要恢复的时候才会用到。冗余一点也不会增加可用性或减少宕机。在故障转移中,高可用性是建立在冗余的基础上。当有一个组件失效,但存在冗余时,可以停止使用发生故障的组件,而使用冗余备件。
故障转移比仅仅从故障中恢复更好。也可以针对一些情况制定故障转移计划,例如升级、schema变更、应用修改或者定期维护,当发生故障时可以根据计划进行故障转移来减少宕机时间。
故障转移最重要的部分就是故障恢复。如果服务器间不能切换自如,故障转移就是一个死胡同,只能是延缓宕机时间而已。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/589783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

7-1 sdut-Collection-sort--C~K的班级(II)--笔记篇

题目 经过不懈的努力,CXK终于当上了班主任。 现在他要统计班里学生的名单,但是CXK在教务系统中导出班级名单时出了问题,发现会有同学的信息重复,现在他想把重复的同学信息删掉,只保留一个, 但是工作量太大…

LeetCode 热题 100——283. 移动零

283. 移动零 提示 简单 2.3K 相关企业 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,…

使用anaconda创建notebook工程

1.由于每个工程使用的环境都可能不一样,因此一个好的习惯就是不同的工程都创建属于自己的环境,在anaconda中默认的环境是base: //括号中名字,代表当前的环境 (base)dragonmachine: $ conda create --nameexample2.激活环境 // 环…

伺服电机:电子齿轮比

电子齿轮比的概念 位置控制模式下,输入的位置指令是对负载位移进行设定,而电机的位置指令是编码器单位,是对电机的位移进行进行设定,电机位置指令与输入位置指令的比例就是电子尺齿轮比。 输入的位置指令,所对应的位…

JVM内存区域与常见问题

内存结构 这里先以JDK1.8 hotspot垃圾收集器为例,讲讲每块区域存储的数据以及可能会抛的异常。 堆 存放对象实例,会出现内存溢出或内存泄露等情况。 栈 一次方法调用会产生一个栈帧,如果出现递归死循环调用栈空间满了,会出现…

【全网首发】洛谷贪心题解集合

贪心 1.P2240 【深基12.例1】部分背包问题 【深基12.例1】部分背包问题 - 洛谷 思路 万不要被题目给误导了,这道题是贪心。 所有金币都可以分开,也就是说只要按照性价比最高的取一定得到的价值最大。 性价比就是这堆金币的价值除以重量。 只需要把…

85双指针解三数之和

问题描述:给你一个包含n个整数的数组nums,判断nums中是否勋在三个元素a,b,c使得abc0,请你找出所有和为0且不重复的三元组。 求解思路:如果使用for循环的方式,n3的时间复杂度,可以采用双指针的方式,先将整个…

企业级大数据架构设计

企业级大数据架构设计 企业级大数据架构设计 又名: 学习大数据概念, 写框架(第1天) 数据架构与设计:概述与设计考虑 引言数据架构概述设计考虑因素构建数据架构的步骤 大数据的核心架构内容:构建高效和…

14.用户管理

目录 1、权限表 1、user表 1.用户列 2.权限列 3.安全列 4.资源控制列 2、db表和host 表 1.用户列 2.权限列 3. tables_priv 表和 columns _priv 表 4.procs_priv 表 2、账户管理 1. 登录和退出MySQL服务器 2、创建普通用户: 1.使用CREATE USER语创建…

前端crypto-js 库: MD5

文章目录 什么是crypto-js安装依赖MD5 什么是crypto-js github地址: https://github.com/brix/crypto-js cryptojs文档: https://cryptojs.gitbook.io/docs/#encoders CryptoJS (crypto.js) 为 JavaScript 提供了各种各样的加密算法。 CryptoJS是一个JavaScript加密算法库&a…

免费的CISSP备考学习网站

CISSP(Certified Information Systems Security Professional)是一项高级的信息安全认证,官方认证机构是(ISC)。虽然(ISC) 提供了官方培训资料,但是很多学习资料都是商业性质的,需要付费购买。尽管如此,仍然…

基于Java SSM框架实现健康管理系统项目【项目源码】

基于java的SSM框架实现健康管理系统演示 JSP技术 JSP是一种跨平台的网页技术,最终实现网页的动态效果,与ASP技术类似,都是在HTML中混合一些程序的相关代码,运用语言引擎来执行代码,JSP能够实现与管理员的交互&#xf…

二分算法

目录 二分 数的三次方根 算法模板 二分 给定一个按照升序排列的长度为 n 的整数数组,以及 q 个查询。 对于每个查询,返回一个元素 k 的起始位置和终止位置(位置从 00 开始计数)。 如果数组中不存在该元素,则返回 -1…

pycharm配置pyrcc5外部工具

pyrcc5这是 PyQt5 中用来将资源文件(.qrc)转换为 Python 文件的工具。类似地,如果你想在 PyCharm 中配置 pyrcc5 将 .qrc 文件转换为 .py 文件的外部工具,你可以遵循以下步骤: 打开 PyCharm 的设置: 选择 File > Se…

GO语言基础笔记(九):工程实践

单元测试(Unit Testing) 单元测试是指对软件中的最小可测试单元进行检查和验证。在Go语言中,可以使用内置的testing包来进行单元测试。进行单元测试时,您应该关注以下几个要点: 测试代码的独立性:确保每个…

P1163 银行贷款

P1163 银行贷款 P1163 银行贷款 题意 1.从银行贷款后,在一段时间内每月偿还固定的分期付款。这个问题要求计算出贷款者向银行支付的利率。假设利率按月累计。 2.三个用空格隔开的正整数。第一个整数表示贷款的原值n,第二个整数表示每月支付的分期付款金…

解决idea文件properties中文乱码问题

解决idea文件properties中文乱码问题_idea properties文件中文乱码-CSDN博客

[react]脚手架create-react-app/vite与reac项目

[react]脚手架create-react-app/vite与reac项目 环境问题描述create-react-app 脚手架根据脚手架修改项目结构安装脚手架注入配置文件-config文件夹package.json文件变更删除 serviceWorker.js新增reportWebVitals.js文件更新index.js文件 脚手架creat-react-app 缺点 vite 脚手…

基于Springboot实现天天生鲜销售电商平台

SSM毕设分享 基于Springboot实现天天生鲜销售电商平台 1 项目简介 Hi,各位同学好,这里是郑师兄! 今天向大家分享一个毕业设计项目作品【】 师兄根据实现的难度和等级对项目进行评分(最低0分,满分5分) 难度系数:3分 …

中文字符占用字节即相关原理(实现中文(中英混合)字符串的反转)

如有不对欢迎指正。 目录 一.ASCLL字符和中文字符 1.使用无符号数表示的原因(对于中文字符): 2.但是并不是所有情况都是用无符号数(以下目前只是猜测,如有问题欢迎指正) : 1. 什么时候使用无符号数表示: 2. 不需要使用的情况: …