引言
高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用。一般而言,衡量高可用做到什么程度可以通过一年内服务不可用时间作为参考,要做到3个9的可用性,一年内只能累计有8个小时不可服务,而如果要做到5个9的可用性,则一年内只能累计5分钟服务中断。
对于一个系统而言,可能包含很多模块,比如前端应用,缓存,数据库,搜索,消息队列等,每个模块都需要做到高可用,才能保证整个系统的高可用。对于数据库服务而言,高可用可能更复杂,对用户的服务可用,不仅仅是能访问,还需要有正确性保证,因此数据库的高可用方案,一般会同时考虑方案中数据一致性问题。
项目背景
原MySQL高可用方案,是58集团自研的,可以满足基本的存活检测、故障切换等日常运维需求。但是存在一些缺陷:
故障切换时,直接切换,不会追补数据;
基于配置文件进行单进程扫描,效率差,且缺少周边工具;
不能在线切换;
仅从监控机探测主库服务状态,检测指标单一,有误切风险;
随着MySQL集群数量增长,上述缺陷所带来的问题日益严重,因此决定采用新的MySQL高可用方案。
高可用方案WMHA
为解决上面提到的问题,同时尽可能低成本改造现有MySQL架构,经多次讨论,决定采用业内比较成熟的MHA方案,并在此方案的基础上,进行改造,原因如下:
沉淀多年,相对成熟;
无需调整现有MySQL架构;
Perl开发,完全开源,方便改造;
由于原生MHA不能完全适用于集团现有MySQL架构,所以对部分功能进行了改造,支持对LVS VIP的检测、支持切换队列等功能,改造后的方案命名为WMHA。
MHA简介
MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案&#