博客 MySQL MHA高可用集群搭建与故障切换实战

MySQL MHA高可用集群搭建与故障切换实战

   数栈君   发表于 2025-12-17 11:44  79  0

MySQL MHA 高可用集群搭建与故障切换实战

在现代企业中,数据中台、数字孪生和数字可视化等技术的应用越来越广泛,而这些技术的核心离不开高效、稳定的数据库支持。MySQL 作为全球最受欢迎的开源数据库之一,其高可用性对于企业业务的连续性至关重要。MySQL MHA(Master High Availability) 是一个基于 Perl 的高可用性解决方案,能够实现 MySQL 数据库的主从复制和故障切换。本文将详细介绍 MySQL MHA 的搭建过程、故障切换实战以及相关的监控与维护策略。


什么是 MySQL MHA?

MySQL MHA 是一个用于 MySQL 高可用性集群的工具,主要通过主从复制(Master-Slave)实现数据库的高可用性。其核心功能包括:

  1. 自动故障检测:当主数据库发生故障时,MHA 能够快速检测到问题。
  2. 自动故障切换:在检测到故障后,MHA 会自动将从数据库提升为主数据库,确保服务不中断。
  3. 并行复制:MHA 支持并行复制技术,能够显著提高数据同步效率。
  4. 半同步复制支持:MHA 支持半同步复制模式,确保数据一致性。

MHA 的优势在于其简单易用性和高效性,特别适合中小型企业或对成本敏感的企业。


MySQL MHA 高可用集群搭建步骤

1. 环境准备

在搭建 MySQL MHA 集群之前,需要确保以下环境准备完成:

  • 操作系统:Linux(推荐 CentOS 7+ 或 Ubuntu 18.04+)
  • MySQL 版本:MySQL 5.7+(MHA 不支持 8.0+ 版本,建议使用 5.7 版本)
  • 硬件资源:至少两台服务器,每台服务器具备足够的 CPU、内存和存储资源。
  • 网络配置:确保两台服务器之间网络通信正常,能够互相访问。

2. 安装 MySQL

在搭建 MHA 之前,需要先安装 MySQL 数据库。以下是安装步骤:

CentOS 7 安装 MySQL 5.7:

# 添加 MySQL YUM 仓库yum install -y https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm# 安装 MySQLyum install -y mysql-community-server# 启动 MySQL 服务systemctl start mysqldsystemctl enable mysqld

Ubuntu 18.04 安装 MySQL 5.7:

# 添加 MySQL GPG 仓库sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 95CA1F0FEFDC4C9D2E35A78F5A1A268C2E1A2172sudo add-apt-repository 'deb http://mirrors.tuna.tsinghua.edu.cn/mysql-ubuntu/ bionic mysql-5.7'# 更新包列表sudo apt update# 安装 MySQLsudo apt install -y mysql-server

3. 配置主从复制

在两台服务器上分别配置主数据库(Master)和从数据库(Slave),并确保数据同步。

配置主数据库(Master):

  1. 修改 MySQL 配置文件(/etc/my.cnf),添加以下内容:
[mysqld]log_bin = mysql-bin.logbinlog_do_db = your_database_nameserver_id = 1
  1. 重启 MySQL 服务:
systemctl restart mysqld
  1. 在主数据库上创建复制用户:
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%' IDENTIFIED BY 'password';FLUSH PRIVILEGES;

配置从数据库(Slave):

  1. 修改 MySQL 配置文件(/etc/my.cnf),添加以下内容:
[mysqld]server_id = 2
  1. 复制主数据库的备份文件到从数据库,并执行还原操作:
mysql -u root -p < /path/to/your_database_dump.sql
  1. 配置从数据库同步主数据库:
CHANGE MASTER TOMASTER_HOST = 'master_ip',MASTER_USER = 'repl_user',MASTER_PASSWORD = 'password',MASTER_LOG_FILE = 'mysql-bin.log',MASTER_LOG_POS = 123456;START SLAVE;
  1. 检查从数据库同步状态:
SHOW SLAVE STATUS\G

确保 Slave_IO_RunningSlave_SQL_Running 均为 YES

4. 安装 MHA 组件

MHA 包含两个主要组件:mha_managermha_secondary_check。以下是安装步骤:

下载 MHA:

# 下载 MHAgit clone https://github.com/yoshinari-natsume/mha4mysql-manager.git# 进入 MHA 目录cd mha4mysql-manager

安装依赖:

# 安装 Perl 和相关模块yum install -y perl-DBI perl-DBD-mysql perl-Config-Tiny perl-Time-HiRes

配置 MHA:

  1. 创建配置文件 app.conf
[application]name = my_clusterversion = 1.0[server]hostname = master_ipssh_user = rootssh_password = your_passwordmysql_user = rootmysql_password = your_root_password
  1. 创建 check_dbleader.plstart_master.pl 脚本:
cp check_dbleader.pl /usr/local/bin/cp start_master.pl /usr/local/bin/chmod +x /usr/local/bin/check_dbleader.plchmod +x /usr/local/bin/start_master.pl

5. 启动 MHA 管理器

  1. 启动 MHA 管理器:
perl manager.pl --start --conf=/path/to/app.conf
  1. 检查 MHA 状态:
perl manager.pl --status --conf=/path/to/app.conf

MySQL MHA 故障切换实战

1. 正常故障切换流程

  1. 模拟主数据库故障
# 在主数据库上停止 MySQL 服务systemctl stop mysqld
  1. MHA 自动检测故障

MHA 会自动检测到主数据库的故障,并执行故障切换操作。

  1. 执行故障切换
perl manager.pl --start_master --conf=/path/to/app.conf
  1. 验证故障切换结果

检查从数据库是否已成为新的主数据库,并确保数据同步正常。

2. 手动故障切换流程

  1. 执行手动故障切换
perl manager.pl --start_master --conf=/path/to/app.conf
  1. 恢复原主数据库

在故障切换完成后,可以将原主数据库恢复为从数据库:

CHANGE MASTER TOMASTER_HOST = 'new_master_ip',MASTER_USER = 'repl_user',MASTER_PASSWORD = 'password',MASTER_LOG_FILE = 'mysql-bin.log',MASTER_LOG_POS = 123456;START SLAVE;

3. 监控与验证

  1. 监控集群状态

使用以下命令监控集群状态:

perl manager.pl --status --conf=/path/to/app.conf
  1. 检查数据一致性

在故障切换后,需要检查主从数据库的数据一致性:

SHOW SLAVE STATUS\G

确保 Slave_SQL_RunningSlave_IO_Running 均为 YES


MySQL MHA 的监控与维护

1. 日志监控

MHA 的日志文件位于 /var/log/mha/ 目录下,可以通过以下命令查看日志:

tail -f /var/log/mha/app.log

2. 常见问题处理

  • 主从复制延迟:检查网络带宽和磁盘 I/O,优化数据库性能。
  • 故障切换失败:检查 MHA 配置文件和权限,确保所有组件正常运行。
  • 数据不一致:执行 mysqldump 备份并还原数据,确保数据一致性。

3. 定期维护

  • 备份数据:定期备份数据库,确保数据安全。
  • 性能优化:根据业务需求,优化数据库配置和查询性能。
  • 版本升级:定期检查 MySQL 和 MHA 的版本,及时升级到最新版本。

总结与广告

MySQL MHA 是一个高效、可靠的高可用性解决方案,能够为企业提供稳定的数据库服务。通过本文的实战操作,您可以轻松搭建一个高可用的 MySQL 集群,并掌握故障切换的技巧。对于数据中台、数字孪生和数字可视化等应用场景,MySQL MHA 的高可用性能够为企业业务的连续性提供有力保障。

如果您对 MySQL MHA 或其他数据库解决方案感兴趣,可以申请试用我们的产品:申请试用。我们的技术支持团队将竭诚为您服务,帮助您更好地管理和优化数据库。


通过本文的详细指导,您已经掌握了 MySQL MHA 高可用集群的搭建与故障切换方法。希望这些内容能够帮助您在实际工作中提升数据库的可用性和稳定性。

申请试用&下载资料
点击袋鼠云官网申请免费试用:https://www.dtstack.com/?src=bbs
点击袋鼠云资料中心免费下载干货资料:https://www.dtstack.com/resources/?src=bbs
《数据资产管理白皮书》下载地址:https://www.dtstack.com/resources/1073/?src=bbs
《行业指标体系白皮书》下载地址:https://www.dtstack.com/resources/1057/?src=bbs
《数据治理行业实践白皮书》下载地址:https://www.dtstack.com/resources/1001/?src=bbs
《数栈V6.0产品白皮书》下载地址:https://www.dtstack.com/resources/1004/?src=bbs

免责声明
本文内容通过AI工具匹配关键字智能整合而成,仅供参考,袋鼠云不对内容的真实、准确或完整作任何形式的承诺。如有其他问题,您可以通过联系400-002-1024进行反馈,袋鼠云收到您的反馈后将及时答复和处理。
0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料