MHA(Master High Availability)通过高效的主从切换机制,确保数据的一致性和系统的高可用性。
MHA的主要功能包括:
- 监控主数据库服务器的状态,确保其正常运行。
- 当检测到主数据库服务器故障时,自动从多个备用服务器中选举出新的主服务器。
- 提供主从切换和故障转移功能,最小化服务中断时间。
- 支持与半同步复制结合,进一步提高数据安全性和一致性。
MHA的主从切换流程如下:
- 尝试从故障的主数据库服务器中恢复二进制日志,以确保数据完整性。
- 从多个候选服务器中选择新的主服务器。此过程可以通过预先配置排除某些服务器参与选举。
- 将从原主服务器恢复的二进制日志应用于新选的主服务器。如果遇到重复的主键等问题,MHA会停止故障转移过程以避免数据冲突。
- 提升选定的备用服务器为新的主服务器。
- 将集群中的其他从服务器重新配置为新的主服务器的从服务器,确保整个集群恢复正常运作。
MHA的配置步骤:
- 配置集群内所有主机之间的SSH免密码登录,以便在故障转移过程中能够自动执行必要的操作,如保存原主服务器的二进制日志和配置虚拟IP地址。
- 安装MHA的node组件和manager组件。
- 安装依赖的Perl模块,例如:perl-Config-Tiny.noarch、perl-Time-HiRes.x86_64、perl-Parallel-ForkManager、perl-Log-Dispatch-Perl.noarch 和 perl-DBD-MySQL,以及ncftp。
- 建立主从复制集群,支持基于GTID的复制模式(推荐使用)。
- 配置MHA管理节点,使用mastersh_check_ssh 和 masterha_check_repl命令检查配置的有效性。
- 启动并测试MHA服务,确保其能够正确响应主服务器的故障并执行切换操作。
MHA工具的优点:
- 由Perl语言开发的开源工具,社区支持广泛。
- 支持基于GTID的复制模式,提高了数据一致性和可靠性。
- 在进行故障转移时,MHA能够有效减少数据丢失的风险。
- 单个监控节点可以同时监控多个数据库集群,便于集中管理。
MHA工具的缺点:
- 需要编写脚本或使用第三方工具来配置VIP,增加了部署复杂性。
- 启动后仅监控主数据库服务器,对从服务器的监控不足。
- 基于SSH免认证配置可能存在安全风险。
- 未提供从服务器的读负载均衡功能,需额外配置。