在当今数字化转型的浪潮中,企业对数据的依赖程度日益增加。数据中台、数字孪生和数字可视化等技术的应用,使得企业对数据库的高可用性和稳定性提出了更高的要求。MySQL 作为全球最受欢迎的关系型数据库之一,其高可用集群方案 MySQL MHA(Master High Availability)成为了企业保障数据可靠性的重要选择。本文将详细介绍 MySQL MHA 的搭建过程、故障恢复方案以及相关的优化技巧,帮助企业构建一个稳定、高效的数据库集群。
MySQL MHA 是 MySQL 的高可用性解决方案,主要用于实现 MySQL 数据库的主从复制和故障自动切换。其核心组件包括:
通过 MHA,企业可以实现 MySQL 数据库的高可用性,确保在主节点故障时,从节点能够快速接管,减少甚至消除业务中断的时间。
在搭建 MySQL MHA 集群之前,需要确保以下环境准备完成:
在主节点和从节点上安装 MySQL,并确保两台服务器的版本一致。
# 安装 MySQLsudo yum install mysql-community-server mysql-community-client mysql-community-devel在主节点上,修改 MySQL 配置文件,启用二进制日志,并设置主节点的唯一标识。
# 修改配置文件sudo vi /etc/my.cnf添加以下内容:
[mysqld]log_bin = mysql-bin.logserver_id = 1重启 MySQL 服务:
sudo systemctl restart mysqld在从节点上,修改 MySQL 配置文件,设置从节点的唯一标识,并指定主节点的地址。
sudo vi /etc/my.cnf添加以下内容:
[mysqld]server_id = 2master_host = 主节点 IPmaster_user = 复制用户master_password = 复制密码重启 MySQL 服务:
sudo systemctl restart mysqld在主节点上,创建一个用于主从复制的用户,并授予复制权限。
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password';GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';FLUSH PRIVILEGES;在从节点上,执行 mysql 命令,连接到主节点并同步数据。
mysql -u repl_user -p -h 主节点 IP执行以下命令:
STOP SLAVE;CHANGE MASTER TO MASTER_HOST='主节点 IP', MASTER_USER='repl_user', MASTER_PASSWORD='password';START SLAVE;验证从节点是否同步:
SHOW SLAVE STATUS\G确保 Slave_IO_State 为 Waiting for initial chunk from master,Slave_IO_Running 和 Slave_SQL_Running 均为 Yes。
在主节点和从节点上安装 MHA 组件。
# 下载 MHAwget https://github.com/yoshinari-natsume/mha4mysql-manager/releases/download/v0.58.0/mha4mysql-manager-0.58.0.tar.gz# 解压tar -zxvf mha4mysql-manager-0.58.0.tar.gz# 安装cd mha4mysql-manager-0.58.0sudo ./install.sh在主节点上,创建 MHA 的配置文件。
sudo vi /etc/mha/app1.cnf添加以下内容:
[app1]description = "MySQL MHA Cluster"node1 = 主节点 IPnode2 = 从节点 IP[mysql_bin]bin_path = /usr/bin[ssh]user = root在主节点上,配置 VIP,确保故障切换后服务的连续性。
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0添加以下内容:
VIPA=虚拟 IP 地址VIPNETMASK=255.255.255.0VIPBROADCAST=虚拟 IP 地址.255重启网络服务:
sudo systemctl restart network在主节点上,执行以下命令测试 MHA 的故障切换功能。
sudo /usr/bin/mha_manager -A -f /etc/mha/app1.cnf模拟主节点故障:
sudo /usr/bin/mha_manager -F -f /etc/mha/app1.cnf验证从节点是否成功提升为主节点,并确保 VIP 切换到从节点。
在从节点上,检查从节点是否已成功提升为主节点。
SHOW SLAVE STATUS\G确保 Slave_IO_Running 和 Slave_SQL_Running 均为 Yes。
在从节点上,执行以下命令切换 VIP。
sudo ./vipfailover.sh -f /etc/mha/app1.cnf将应用的数据库连接地址从主节点 IP 更新为 VIP。
在主节点上,检查主节点是否正常运行。
SHOW MASTER STATUS\G在从节点上,重新配置主从复制关系。
STOP SLAVE;CHANGE MASTER TO MASTER_HOST='主节点 IP', MASTER_USER='repl_user', MASTER_PASSWORD='password';START SLAVE;在主节点上,执行以下命令切换 VIP。
sudo ./vipfailover.sh -f /etc/mha/app1.cnf确保主节点和从节点之间的网络连接正常。
ping 主节点 IPping 从节点 IP在网络故障恢复后,执行以下命令切换 VIP。
sudo ./vipfailover.sh -f /etc/mha/app1.cnf为了确保 MySQL MHA 集群的稳定运行,建议部署监控和告警系统,例如:
通过监控工具,可以实时了解集群的运行状态,并在故障发生时快速响应。
根据业务需求,对 MySQL 和 MHA 进行性能调优。以下是一些常见的调优建议:
innodb_buffer_pool_size 和 key_buffer_size。EXPLAIN 分析慢查询,并优化 SQL 语句。为了防止数据丢失,建议定期备份 MySQL 数据库。可以使用以下工具:
MySQL MHA 高可用集群是企业保障数据库稳定性的重要手段。通过本文的详细介绍,企业可以掌握 MySQL MHA 的搭建和故障恢复方案,并通过优化和维护进一步提升集群的性能和可靠性。如果您对 MySQL MHA 有进一步的需求或问题,欢迎申请试用 DTStack,获取更多技术支持和服务。
申请试用&下载资料