2021-02-22

1、什么是高可用性

  1. 高可用性是相对的没有100%的高可用只有尽可能接近100%。
  2. 可用性每提高一点,所花费的成本都会远超之前,可用性的效果和开销的比例并不是线性的。

2、导致宕机的原因

  1. 运行环境问题,最普遍的是磁盘空间耗尽。
  2. 性能问题,最普遍的是运行糟糕的SQL,或服务器BUG或错误的行为。
  3. 表和索引设计有问题。
  4. 复制问题通常由于主备数据不一致导致。
  5. 数据丢失通常由于DROP TABLE的误操作导致,并总是伴随着缺少可用备份的问题。

3、如何实现高可用性

3.1、提升平均失效时间(MTBF)

避免导致宕机的原因来减少宕机时间

  • 测试恢复工具和流程包括从备份中恢复数据。
  • 遵从最小权限原则。
  • 保持系统干净、整洁。
  • 用好的命名和组织约定来避免产生混乱,例如服务器是用于开发还是用于生产环境。
  • 安排升级数据库服务器。在升级前,使用诸如PerconaToolkit中的pt-upgrade之类的工具仔细检查。
  • 系统使用INNODB并进行适当的配置,确保INNODB是默认存储引擎。如果存储引擎被禁止,服务器就无法启动。
  • 确认基本的服务器配置是正确的。
  • 通过skip_name_resolve禁止DNS。
  • 除非能证明有效,否则禁用查询缓存。
  • 避免使用复杂的特性,例如复制过滤和触发器,除非确实需要。
  • 监控重要的组件和功能,特别是像磁盘空间和RAID卷状态这样的关键项目,但也要避免误报,只有当确实发生问题时才发送告警。
  • 尽量记录服务器的状态和性能指数,如果可能就尽量久地保存。
  • 定期检查复制完整性。
  • 将备库设置为只读,不要让复制自动启动。
  • 定期进行查询语句审查。归档并清理不需要的数据。
  • 为文件系统保留一些空间。在GNU/Linx中,可以使用-m选项来为文件系统本身保留空间。还可以在LVM卷组中留下一些空闲空间。或者,更简单的方法,仅仅创建一个巨大的空文件,在文件系统快满时,直接将其删除。
  • 养成习惯,评估和管理系统的改变、状态以及性能信息。

3.2、降低平均恢复时间(MTTR)

尽量保证在发生宕机时能够快速恢复

  • 所有的宕机事件都是由多方面的失效联合在一起导致的,可以通过利用合适的方法比如主备结构确保单点的安全。

4、避免单点失效

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

4.1、共享存储或磁盘复制

共享存储能够为数据库服务器和存储解耦合,通常使用的是SAN。使用共享存储时,服务器能够正常挂载文件系统并进行操作。如果服务器挂了,备用服务器可以挂载相同的文件系统,执行需要的恢复操作,并在失效服务器的数据上启动MySQL。这个过程在逻辑上跟修复那台故障的服务器没什么两样,不过更快速,因为备用服务器已经启动,随时可以运行。当开始故障转移时,检查文件系统、恢复InnoDB以及预热是最有可能遇到延迟的地方,但检测失效本身在许多设置中也会花费很长时间。

磁盘复制技术是另外一个获得跟SAN类型效果的方法。MySQL中最普遍使用的磁盘复制技术是DRBD,并结合Linux-HA项目中的工具使用。

4.2、同步复制

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

4.3、基于复制的冗余

复制管理器是使用标准MySQL复制来创建冗余的工具。尽管可以通过复制来改善可用性,但也有一些“玻璃天花板”当前版本的异步复制和半同步复制获得和真正的同步复制相同的结果。复制无法保证实时的故障转移和数据零丢失,也无法将所有节点等同对待。

5、故障转移和故障恢复

在故障转移的过程中,高可用性是建立在冗余的基础上。当有一个组件失效,但存在冗余时,可以停止使用发生故障的组件,而使用冗余组件。冗余和故障转移结合可以帮助更快的恢复。

5.1、提升备库或切换角色

提升一台备库作为主库,或者在一个主-主结构中调换主动或被动角色。

5.2、虚拟IP地址或IP接管

可以为需要提供特定服务的MySQL实例指定一个逻辑IP地址。当MySQL实例失效时,可以将IP地址转移到另一台MySQL服务器上。这和负载均衡类似。

5.3、中间件解决方案

可以使用代理、端口转发、网络地址转换或者硬件负载均衡来实现故障转移和故障恢复。这些都是很好的解决方案,不像其他方法可能会引入一些不确定性,它们是控制应用和服务器间连接的中枢。但是,它们自身也引入了单点失效,需要准备冗余来避免这个问题。

5.4、在应用中处理

当应用判断mysql失效自动转到另一台。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,755评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,305评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,138评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,791评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,794评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,631评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,362评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,264评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,724评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,900评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,040评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,742评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,364评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,944评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,060评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,247评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,979评论 2 355

推荐阅读更多精彩内容

  • 1、什么是可扩展性 可扩展性。 即通过增加资源提升整个系统吞吐量的能力 一般会有如下的角度影响负载: 数据量 用户...
    先弓阅读 356评论 0 0
  • 竞App项目 作者华远 写于2005年3月,修改于2021年2月 作者华远 第一,概况: 据人民网报道,国家主席习...
    华远科学性美学阅读 191评论 0 0
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,567评论 0 11
  • 彩排完,天已黑
    刘凯书法阅读 4,218评论 1 3
  • 没事就多看看书,因为腹有诗书气自华,读书万卷始通神。没事就多出去旅游,别因为没钱而找借口,因为只要你省吃俭用,来...
    向阳之心阅读 4,788评论 3 11