MySQL高可用环境的搭建核心在于避免单点故障,确保数据库在异常情况下仍能正常对外提供服务。常用方案包括主从复制+读写分离、MMM、MHA、PXC(Percona XtraDB Cluster)、以及使用中间件如ProxySQL或MaxScale等。下面介绍一种基于MHA + 主从复制的高可用搭建方法,适合大多数中小型企业场景。
1. 搭建MySQL主从复制结构
高可用的基础是数据冗余,主从复制是实现数据同步的关键步骤。
配置主库(Master):启用二进制日志(binlog),设置唯一的server-id。 配置从库(Slave):设置不同的server-id,开启中继日志(relay log)。 在主库创建用于复制的账号,如:CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';从库执行CHANGE MASTER TO命令,指向主库并启动复制:
START SLAVE;检查复制状态:
SHOW SLAVE STATUS\G,确认Seconds_Behind_Master为0且无错误。
2. 部署MHA(Master High Availability)
MHA能在主库宕机时自动完成故障转移,选择最新的从库提升为新主库,并重新配置其他从库指向新主库。
准备四台服务器:一主两从 + 一台MHA管理节点(可与从库共用)。 安装MHA Node(每台MySQL服务器都要安装)和MHA Manager(仅管理节点安装)。 配置SSH免密登录:MHA需通过SSH管理各节点,建议使用专用用户(如mha)并配置互信。 创建MHA配置文件,如/etc/mha/app1.cnf,指定主从关系、用户名密码、脚本路径等。 验证SSH和复制配置:masterha_check_ssh和
masterha_check_repl。
3. 配置故障切换脚本
MHA支持自定义脚本,在主库宕机时执行IP漂移或通知操作。
编写VIP(虚拟IP)切换脚本,在主库故障时将VIP绑定到新主库。 示例:使用ifconfig或ip命令在新主库上添加VIP,旧主库恢复后作为从库加入集群。 在MHA配置中指定master_ip_failover_script参数,指向该脚本。 可选:配置邮件或短信告警脚本,及时通知运维人员。
4. 启动MHA监控并测试故障转移
一切准备就绪后,启动MHA监控进程。
运行命令:nohup masterha_manager --conf=/etc/mha/app1.cnf &查看MHA日志确认是否正常监控主库。 模拟主库宕机(如关闭MySQL服务),观察MHA是否自动完成切换。 检查新主库是否被正确提升,其他从库是否重新同步。 原主库恢复后,需手动将其配置为从库,接入新主库进行同步。
基本上就这些。这套方案结合了主从复制的数据安全性和MHA的自动故障转移能力,成本低、稳定性好。注意定期备份数据,同时建议结合半同步复制(semi-sync)提升数据一致性。高可用不只是工具,还需要完善的监控和应急流程配合。
