Akemi

MySQL高可用方案介绍

2024/09/03

高可用方案:
一主一从,一主多从,MHA,MMM

负载均衡:
Cluster

混合模式:
双主多从,从库负载均衡

主从复制

一主一从,主库读写从库备份
结构简单、节省资源,但无法线性拓展,同步失败后需要手动恢复主从架构

实现功能:
1.数据备份与容灾
2.读写分离,负载均衡
3.业务拆分,根据重要性进行拆分访问

MHA(Master High Availability)

一个高可用的解决方案,在故障切换的过程中能在30秒内自动完成数据库的故障切换操作,并且可以保证数据的一致性,支持一主多从,所以要求集群中至少有三台服务器

MHA由MHA Manager和MHA Node组成

Manager可以单独部署在一台机器上管理多个主从集群,也可以部署在slave节点上

Node运行在每台MySQL服务器上,因为Manager会定时探测集群中的master,当master故障时,自动将最新数据的slave提升为新的master,并将其他slave重新指向到新的master,类似于redis的哨兵模式

MHA+双主+多从高可用

至少5台服务器,两台主库,两台从库,一台MHA Monitor
负载均衡层使用LVS或HAProxy+keepalive组合

双主热备模式,读写分离,slave可扩展

读写分离需要在程序端解决,master大批量写时会产生主从延时

MMM(比较少见)

MMM是一套支持双主故障切换和双主管理的脚本程序,主要用来监控和管理Mysql双主复制,具备故障切换的功能,其内部的工具脚本也可以实现多个从库读的负载均衡

提供了自动和手动两种方式来踢出一组服务器中延迟较高的服务器的ip,同时还可以实现数据备份,实现两节点间数据同步的需求

但MMM无法保证数据完全一致,适用于业务对数据一致性要求不是很高又想最大化业务可用性的场景

双主HA+keepalived(推荐)

结构简单并且节省资源,单无法线性扩展,主从复制失败后需要手动恢复主从结构

双主DRBD+heartbeat(不推荐)

使用heartbeat双机热备,磁盘一致性使用DRBD来保证

安全性高,稳定性高,可用性高,故障自动切换

不方便扩展,但如果心跳线断了就会脑裂,导致数据不一致,同时heartbeat也无法对后端进行健康检查(keepalived可以配一个脚本来检测)

Calera Cluster

号称世界上最先进的开源数据库集群方案,包括三种for mysql,Percona XtraDB Cluster,Mariadb Galera Cluster,其中PXC是推荐的

解决了强一致性问题,使各节点保持一致性的同时实现多节点同时读写

提高数据库的可靠性,也可以实现读写分离

一个集群至少3个节点,不超过9个

多主多从,读写分离,集群可线性扩展

读写分离需要在程序端解决,master大批量写时会产生主从延时

MGR组复制(Mysql Group Replication)

提供了多写特性

在传统主从架构中,主从是分离的,主只负责写,从负责读

在组复制中,每个节点都是主节点,一个主节点收到写请求后,在提交之前会通知其他主节点,都同意才会执行这个写操作

特点:

弹性复制,可以动态增加或收缩
分表分片,使用组复制可以实现高可用分片
能够替代主从复制

CATALOG
  1. 1. 主从复制
  2. 2. MHA(Master High Availability)
    1. 2.1. MHA+双主+多从高可用
  3. 3. MMM(比较少见)
  4. 4. 双主HA+keepalived(推荐)
  5. 5. 双主DRBD+heartbeat(不推荐)
  6. 6. Calera Cluster
  7. 7. MGR组复制(Mysql Group Replication)