——「高性能MYSQL」读书笔记(第十二章)
《高性能****MYSQL》
MYSQL经典书籍,常读常新。
重点、亮点内容摘抄
第十二章 高可用性
什么是高可用
常说“5个9”,表示 99.999% 的可用时间。换个更直观的说法,一年只允许 5 分钟的宕机时间。这里其实就包含了高可用的两个要点
-
高平均无故障工作时间 MTBF(Mean time between failure)
-
低平均恢复时间 MTTR(Mean time to repair)
如何提高Mysql可用性
提升 MTBF
-
使用者需要小心地使用数据库,由于使用不当造成的宕机还是有相当比例的
-
慢 SQL
-
糟糕的 schema 与 index 的设计
-
磁盘空间耗尽
-
误操作,如不带条件的 DELETE,DROP TABLE 等
-
-
硬件冗余
-
电源:多电源供电,保证服务不会因为某条线路断电而宕机
-
网络:与电源同理,确保有多条网络通道,保证服务不受挖掘机的影响
-
磁盘:通过使用磁盘阵列与数据校验技术,部分硬件损坏不会导致数据丢失
-
缩短 MTTR
核心思路是结合数据冗余技术与故障转移技术,达到缩短 MTTR 的目的
-
数据冗余
-
共享存储,常用技术:存储局域网 SAN(Storage Area Network)、分布式复制块设备 DRBD(Distributed Replicated Block Device)
-
MySQL Cluster
-
共享存储(该方案也是目前NDB使用的方案)
-
磁盘复制
-
MySQL同步服务
-
多主集群(NDB也支持多主集群)
-
-
故障转移
-
客户端主备切换
-
虚IP
-
MySQL代理
-
场景分析
-
历史遗留的表结构不合理、SQL中有很多联表查询,导致有不少慢查
-
目前慢SQL已经在治理中
-
新设计的schema也需要进行评审,严格把关
-
-
线上DDL、DML权限收拢
- 线上DDL、DML都是很严肃的事,目前通过工单的方式控制权限,并且需要经过同事 review,可以尽可能保证 DDL、DML 操作
-
拥抱新技术,了解新技术的原理与使用场景,正确使用工具
- 作为开发,物理硬件上无法做过多干预,更多是了解工具背后的实现原理,针对不同的业务场景,选择合适的工具,并正确使用工具
阅读思考
- 目前字节云已经可以使用自研的NDB作为数据库的引擎,目前虽然没有使用的场景,但是可以适当了解,以便在业务需要时,可以有更大的选择空间,做出更好的选择