写在前面
爱奇艺每天都为数以亿计的用户提供7x24小时不间断的视频服务。通过爱奇艺的平台,用户可以方便的获取海量、优质、高清的视频资源。但如果服务平台出现故障,会有大量的用户将无法正常播放视频,因此我们的应用服务以及数据库服务都必须具备高可用架构。
爱奇艺技术产品团队对各类应用划分了不同的重要等级,对不同重要等级的应用使用数据库服务提供了不同的SLA保障。比如S级应用RTO控制在分钟级别的保障;对A级应用RTO在10分钟级别的保障等。本文将主要介绍我们的MySQL高可用实现方案。
自研MySQL HA系统
1.基于MHA二次开发
MHA是目前比较成熟及流行的MySQL高可用解决方案,很多互联网公司正是直接使用或者基于MHA的架构进行改造实现MySQL的高可用。MHA能在30秒内对故障进行转移,并最大程度的保障数据的一致性。MHA由两个模块组成:Manager 和 Node。
Manager部署在独立的机器上,负责检查MySQL复制状态、主库状态以及执行切换操作。Node运行在每台MySQL机器上,主要负责保存和复制master binlog、识别主库宕机时各Slave差异的中继日志并将差异的事务应用到其他的Slave,同时还负责清除Slave上的relay_log。
它的部署架构如下图所示:
MHA虽然已经比较成熟,但也存在一些的缺点:
使用配置文件管理主备关系、不能重复切换
实例增减需要重启Manager
Manager是单点,虽然有standby的节点,但不能自动切换
另外我们的MySQL部署环境复杂,存在跨DC跨地域的部署,新主的选举需要更多的规则。并且集群数量较为庞大,如果直接采用MHA做高可靠用,会大大增加管理成本。因此我们自研了一套MySQL的高可用方案。
2. MySQL HA架构简介
爱奇艺自研MysQL HA系统由HA Master和HA Agent两部分组成。三个HA Master组成一个最小集群单元,这个最小集群单元对