MySQL MHA (Multi-Master High Availability) 是一种用于提高 MySQL 数据库系统的高可用性和容错性的解决方案。它允许在多台服务器上运行多个主数据库实例,通过监控和自动故障转移,确保数据的连续性和服务的不间断。在这个案例中,我们关注的是一个由三台服务器组成的集群:一台为主服务器(192.168.158.201),两台为备服务器(192.168.158.202 和 192.168.158.203),使用 MHA 来实现高可用性。
1. **服务器部署与配置**:
- 主服务器(Master)运行在192.168.158.201,负责处理读写请求。
- 备服务器(Slave)运行在192.168.158.202和192.168.158.203,作为实时备份,准备在主服务器出现故障时接管。
2. **MHA管理工具**:
- MHA提供了`masterha_check_ssh`命令来检查SSH配置,确保网络连接畅通。
- `masterha_check_repl`用于检查MySQL复制状态,确保数据一致性。
- `masterha_manager`是关键命令行工具,用于启动、监控和管理整个高可用集群。
- `masterha_check_status`可以用来检测MHA的状态,确保系统正常运行。
- `masterha_master_monitor`监控主服务器的健康状况,及时发现异常。
- `masterha_master_switch`支持自动或手动故障转移,能在发生故障时快速切换。
3. **备份与恢复**:
- `save_binary_logs`功能用于保存和复制主服务器的二进制日志,这是故障恢复的重要步骤。
- `apply_diff_relay_logs`则用于处理中继日志差异,确保数据一致性。
- `filter_mysqlbinlog`(虽然不再推荐使用)可过滤掉不必要的ROLLBACK事件,优化日志记录。
4. **安全设置**:
- 建议在生产环境中搭建专属的yum源,如阿里云仓库,以获取最新的软件包和补丁。
- 更新yum源,增强系统稳定性。
- 使用`yumcleanall`清理旧的安装包和缓存,`yummakecache`则用于重新生成依赖关系列表。
- 通过SSH密钥对,实现各服务器之间的无密码登录,提高运维效率。
5. **SSH密钥对管理**:
- 生成SSH密钥对,并使用`ssh-keygen`和`ssh-copy-id`命令将公钥复制到目标服务器的`~/.ssh/authorized_keys`,实现自动化身份验证。
通过以上步骤,可以构建一个高度可靠的MySQL MHA集群,结合VIP(Virtual IP)技术,确保在主服务器故障时,服务能够无缝切换,提供持续的数据访问和业务运行。同时,安全性和维护性也得到了提升。在实际部署过程中,还需要根据具体的业务需求和环境进行定制化配置和调整。