MHA(Master High Availability)是一套用于MySQL数据库的高可用性解决方案,它能够在主服务器发生故障时自动将一个从服务器提升为新的主服务器,从而实现数据库服务的持续可用。MHA的切换过程主要包括以下几个步骤:
1. 故障检测
MHA Manager会定期检查主服务器的状态,通常通过发送心跳包或者执行SQL查询来确认主服务器是否可达。如果主服务器在一段时间内没有响应,MHA Manager会认为主服务器发生了故障。
检测频率由ping_interval=3s控制,3次失败就认为宕机了,即9s.
secondary_check_script 可以控制从外部检查.
2. 配置检查
MHA Manager会检查所有从服务器的配置,确保它们能够成为新的主服务器。这包括检查从服务器的MySQL版本、从库是否存活、GTID模式、日志设置等。
3. 选择新的主服务器
MHA Manager会根据配置文件中的设置选择一个从服务器作为新的主服务器。通常,MHA会选择数据最新的从服务器作为新的主服务器。
4. 数据同步
MHA Manager会将新主服务器的二进制日志(binlog)应用到其他从服务器上,以确保所有从服务器的数据与新主服务器保持一致。
5. 提升新主服务器
MHA Manager会将新选择的从服务器提升为新的主服务器,这包括更新应用程序的连接信息,以便它们能够连接到新的主服务器。
6. 故障恢复
如果原主服务器恢复,MHA Manager可以将其重新加入到集群中,作为新主服务器的从服务器。
在整个切换过程中,MHA Manager会尽可能地保存原主服务器的二进制日志,以减少数据丢失的风险。此外,MHA还支持半同步复制,可以进一步降低数据丢失的可能性。
需要注意的是,MHA的切换过程是自动的,对应用程序来说是透明的。这意味着在切换过程中,应用程序可以继续访问数据库,而不会受到影响