第十二章-高可用性

63 阅读2分钟

——「高性能MYSQL」读书笔记(第十二章)

高性能****MYSQL

MYSQL经典书籍,常读常新。

重点、亮点内容摘抄

第十二章 高可用性

什么是高可用

常说“5个9”,表示 99.999% 的可用时间。换个更直观的说法,一年只允许 5 分钟的宕机时间。这里其实就包含了高可用的两个要点

  1. 高平均无故障工作时间 MTBF(Mean time between failure)

  2. 低平均恢复时间 MTTR(Mean time to repair)

如何提高Mysql可用性

提升 MTBF

  1. 使用者需要小心地使用数据库,由于使用不当造成的宕机还是有相当比例的

    1. 慢 SQL

    2. 糟糕的 schema 与 index 的设计

    3. 磁盘空间耗尽

    4. 误操作,如不带条件的 DELETE,DROP TABLE 等

  2. 硬件冗余

    1. 电源:多电源供电,保证服务不会因为某条线路断电而宕机

    2. 网络:与电源同理,确保有多条网络通道,保证服务不受挖掘机的影响

    3. 磁盘:通过使用磁盘阵列与数据校验技术,部分硬件损坏不会导致数据丢失

缩短 MTTR

核心思路是结合数据冗余技术与故障转移技术,达到缩短 MTTR 的目的

  1. 数据冗余

    1. 共享存储,常用技术:存储局域网 SAN(Storage Area Network)、分布式复制块设备 DRBD(Distributed Replicated Block Device)

    2. MySQL Cluster

    3. 共享存储(该方案也是目前NDB使用的方案)

    4. 磁盘复制

    5. MySQL同步服务

    6. 多主集群(NDB也支持多主集群)

  2. 故障转移

    1. 客户端主备切换

    2. 虚IP

    3. MySQL代理

场景分析

  1. 历史遗留的表结构不合理、SQL中有很多联表查询,导致有不少慢查

    1. 目前慢SQL已经在治理中

    2. 新设计的schema也需要进行评审,严格把关

  2. 线上DDL、DML权限收拢

    1. 线上DDL、DML都是很严肃的事,目前通过工单的方式控制权限,并且需要经过同事 review,可以尽可能保证 DDL、DML 操作
  3. 拥抱新技术,了解新技术的原理与使用场景,正确使用工具

    1. 作为开发,物理硬件上无法做过多干预,更多是了解工具背后的实现原理,针对不同的业务场景,选择合适的工具,并正确使用工具

阅读思考

  1. 目前字节云已经可以使用自研的NDB作为数据库的引擎,目前虽然没有使用的场景,但是可以适当了解,以便在业务需要时,可以有更大的选择空间,做出更好的选择

参考文档