博客 MySQL MHA高可用集群搭建与故障转移配置

MySQL MHA高可用集群搭建与故障转移配置

   数栈君   发表于 2025-12-18 15:59  105  0

MySQL MHA 高可用集群搭建与故障转移配置

在现代企业中,数据中台、数字孪生和数字可视化等技术的应用越来越广泛,而这些技术的核心都离不开一个稳定、高效、高可用的数据库系统。MySQL 作为全球最受欢迎的开源数据库之一,其高可用集群的搭建和故障转移配置是确保业务连续性的重要环节。本文将详细介绍 MySQL MHA(Master High Availability)高可用集群的搭建过程,并深入探讨故障转移配置的关键点。


一、MySQL MHA 简介

MySQL MHA 是一个用于 MySQL 高可用集群的工具集合,主要由两部分组成:

  1. MHA Manager:用于监控 MySQL 集群的状态,并在检测到主节点故障时自动执行故障转移。
  2. MHA Node:安装在每个 MySQL 节点上的代理程序,用于同步主节点的数据到从节点。

MHA 的核心优势在于其基于半同步复制的特性,能够实现快速的故障转移,同时确保数据一致性。对于依赖 MySQL 的企业来说,搭建一个高可用的 MHA 集群可以显著提升系统的可靠性和稳定性。


二、搭建 MySQL MHA 高可用集群的环境准备

在开始搭建之前,需要确保以下环境准备完成:

1. 操作系统要求

  • CentOS 7+ 或其他支持的 Linux 发行版。
  • 确保所有节点的系统版本一致,以避免兼容性问题。

2. 网络配置

  • 所有节点必须位于同一局域网内,确保网络通信正常。
  • 配置节点间的 SSH 互访,以简化后续的集群搭建过程。

3. 数据存储

  • 确定 MySQL 数据目录的存储路径,并确保所有节点的数据目录结构一致。
  • 建议使用高性能的存储设备(如 SSD)来提升数据库性能。

4. 安装依赖工具

  • 安装 perlperl-DBIperl-DBD-mysql 等 Perl 模块,这些是 MHA 的运行依赖。
  • 安装 rsyncssh 工具,用于数据同步和节点间的文件传输。

三、MySQL MHA 高可用集群的搭建步骤

1. 安装 MHA 环境

(1)安装 MHA Manager

在管理节点上安装 MHA Manager:

# 下载 MHA Managerwget https://github.com/yoshinari-natsume/mha4mysql-manager/archive/refs/tags/v0.5.10.zip# 解压并安装unzip mha4mysql-manager-0.5.10.zipcd mha4mysql-manager-0.5.10perl Makefile.PLmakemake install

(2)安装 MHA Node

在所有 MySQL 节点上安装 MHA Node:

# 下载 MHA Nodewget https://github.com/yoshinari-natsume/mha4mysql-node/archive/refs/tags/v0.5.10.zip# 解压并安装unzip mha4mysql-node-0.5.10.zipcd mha4mysql-node-0.5.10perl Makefile.PLmakemake install

2. 配置 MySQL 主从复制

(1)配置主节点

  • 在主节点上启用半同步复制:
    -- 启用半同步复制SET GLOBAL rpl_semi_sync_master_enabled = 1;
  • 配置主节点的 my.cnf 文件,添加以下内容:
    [mysqld]log_bin = mysql-bin.logbinlog_format = ROWSrpl_semi_sync_master_enabled = 1

(2)配置从节点

  • 在从节点上配置从主节点同步数据:
    -- 配置从节点CHANGE MASTER TO  MASTER_HOST = '主节点IP',  MASTER_USER = '复制用户',  MASTER_PASSWORD = '复制密码',  MASTER_LOG_FILE = 'mysql-bin.log',  MASTER_LOG_POS = 0;-- 启用半同步复制SET GLOBAL rpl_semi_sync_slave_enabled = 1;

3. 配置 MHA Manager

在 MHA Manager 节点上创建配置文件 /etc/mha/app.conf,内容如下:

[application]description = "MySQL MHA 高可用集群"candidate_master = truemaster_check_interval = 60master_check_retries = 3[mysqldump]user = mha_userpassword = mha_password

(4)配置 MHA 节点列表

创建 /etc/mha/hosts 文件,列出所有 MySQL 节点:

[mysqld]主节点IP从节点IP

4. 启动 MHA 服务

在 MHA Manager 节点上启动 MHA 服务:

# 启动 MHA Managermha_manager --start --conf=/etc/mha/app.conf

在所有 MySQL 节点上启动 MHA Node 服务:

# 启动 MHA Nodemha_node --start --conf=/etc/mha/app.conf

四、MySQL MHA 故障转移配置

1. 测试故障转移

(1)模拟主节点故障

在 MHA Manager 节点上执行以下命令,模拟主节点故障:

# 模拟主节点故障mha_manager --start --conf=/etc/mha/app.conf --command=stop_and_check --ssh_user=root

(2)观察故障转移过程

MHA Manager 会自动检测主节点故障,并执行故障转移操作。此时,从节点会升级为主节点,系统会自动切换到新的主节点。

2. 配置自动故障转移

在 MHA Manager 节点上配置自动故障转移脚本 /etc/mha/transfer_master.sh,内容如下:

#!/bin/bash# 获取当前主节点current_master=$(mysql -h127.0.0.1 -uadmin -padmin -e "SHOW MASTER STATUS;" | grep File | awk '{print $1}')# 获取从节点列表slaves=$(mysql -h127.0.0.1 -uadmin -padmin -e "SHOW SLAVE STATUS;" | grep -i 'Slave_SQL_Running: Yes' | awk '{print $1}')# 判断是否有从节点可用if [ -z "$slaves" ]; then    echo "没有可用的从节点,无法执行故障转移。"    exit 1fi# 执行故障转移mha_manager --start --conf=/etc/mha/app.conf --command=change_master --ssh_user=root

将脚本设为可执行:

chmod +x /etc/mha/transfer_master.sh

五、MySQL MHA 高可用集群的优化与监控

1. 数据库性能优化

  • 配置缓冲区和缓存:合理设置 innodb_buffer_pool_sizequery_cache_type 等参数。
  • 日志优化:启用慢查询日志,分析并优化 SQL 语句。

2. 集群监控

  • 使用 Percona MonitoringPrometheus 监控 MySQL 集群的状态。
  • 配置 MHA 的监控脚本,定期检查节点的健康状态。

3. 定期备份

  • 使用 mysqldumpxtrabackup 工具进行定期备份。
  • 配置备份脚本,确保备份数据的安全性和完整性。

六、总结

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条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

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