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

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

   数栈君   发表于 2026-02-26 10:57  66  0

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

在现代企业中,数据中台、数字孪生和数字可视化等技术的应用越来越广泛,而这些技术的核心都离不开一个稳定、高效、高可用的数据库系统。MySQL 作为全球最受欢迎的关系型数据库之一,其高可用性配置是企业确保业务连续性的重要保障。而 MySQL MHA(Master High Availability)正是实现 MySQL 高可用性的重要工具之一。

本文将从 MySQL MHA 的基本概念出发,详细讲解如何在生产环境中搭建 MySQL 集群,并通过实战演示故障转移的过程,帮助企业用户更好地理解和应用 MySQL MHA 高可用配置。


什么是 MySQL MHA?

MySQL MHA 是一个用于 MySQL 高可用性管理的工具,主要由两部分组成:MHA ManagerMHA Node

  • MHA Manager:用于监控 MySQL 集群的状态,检测主节点(Master)是否发生故障,并在故障发生时触发故障转移。
  • MHA Node:安装在从节点(Slave)上,用于执行实际的故障转移操作,包括数据同步和主从切换。

通过 MHA,企业可以实现 MySQL 数据库的自动故障转移,确保在主节点发生故障时,从节点能够快速接管,从而最大限度地减少停机时间,保障业务的连续性。


MySQL MHA 的核心优势

  1. 高可用性:MHA 能够在主节点故障时,自动将从节点提升为主节点,确保数据库服务不中断。
  2. 数据一致性:MHA 通过半同步复制(Semi-Synchronous Replication)或异步复制(Asynchronous Replication)机制,确保主从节点之间的数据一致性。
  3. 自动化故障转移:MHA 可以自动检测主节点故障,并执行故障转移操作,减少人工干预。
  4. 多主节点支持:MHA 支持多主节点集群,适用于复杂的高可用架构。

MySQL MHA 的应用场景

  • 数据中台:在数据中台场景中,MySQL MHA 可以确保数据服务的高可用性,支持实时数据分析和决策。
  • 数字孪生:数字孪生需要实时数据支持,MHA 可以保障数据库的稳定性,确保数字孪生系统的正常运行。
  • 数字可视化:在数字可视化场景中,MHA 可以确保数据源的高可用性,避免因数据库故障导致的可视化系统中断。

MySQL MHA 高可用配置实战:集群搭建

1. 环境准备

在搭建 MySQL MHA 集群之前,需要准备好以下环境:

  • 操作系统:Linux(推荐 CentOS 7 或更高版本)。
  • MySQL 版本:MySQL 5.7 或更高版本。
  • 硬件资源:至少两台服务器,每台服务器具备足够的 CPU、内存和存储资源。
  • 网络配置:确保所有节点之间网络通信正常,建议使用私有网络。

2. 安装 MySQL

在两台服务器上安装 MySQL,并配置主从复制(Master-Slave Replication)。

步骤 1:安装 MySQL 依赖

在两台服务器上安装 MySQL 依赖:

sudo yum install -y gcc gcc-c++ make cmake libaio libaio-devel perl-DBI perl-DBD-Mysql

步骤 2:下载并编译 MySQL

下载 MySQL 源码包并编译:

wget https://dev.mysql.com/get/MySQL-Community-GA-5.7.37-linux-glibc2.12-x86_64.tar.gztar zxf MySQL-Community-GA-5.7.37-linux-glibc2.12-x86_64.tar.gzcd MySQL-Community-GA-5.7.37-linux-glibc2.12-x86_64cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysqlmakemake install

步骤 3:配置 MySQL

创建 MySQL 用户和数据库:

sudo useradd mysqlsudo chown -R mysql:mysql /usr/local/mysql

初始化 MySQL:

/usr/local/mysql/bin/mysqld --initialize --user=mysql

设置 MySQL 密码:

/usr/local/mysql/bin/mysql_secure_installation

步骤 4:配置主从复制

在主节点(Master)上,修改 MySQL 配置文件:

sudo vi /usr/local/mysql/etc/my.cnf

添加以下配置:

[mysqld]server-id = 1log-bin = /usr/local/mysql/data/mysql-bin.logbinlog-do-db = your_database_name

在从节点(Slave)上,修改 MySQL 配置文件:

sudo vi /usr/local/mysql/etc/my.cnf

添加以下配置:

[mysqld]server-id = 2relay-log = /usr/local/mysql/data/relay-log.log

重启 MySQL 服务:

sudo systemctl restart mysqld

在主节点上,授予从节点复制权限:

mysql -u root -pGRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'从节点IP' IDENTIFIED BY 'password';FLUSH PRIVILEGES;

在从节点上,配置从主节点同步:

mysql -u root -pCHANGE MASTER TO MASTER_HOST='主节点IP', MASTER_USER='repl_user', MASTER_PASSWORD='password';START SLAVE;

3. 安装 MySQL MHA

在 MHA Manager 和 MHA Node 上安装 MHA。

步骤 1:安装 Perl 和依赖

安装 Perl 和 MHA 所需的 Perl 模块:

sudo yum install -y perl-CPAN perl-DBI perl-DBD-Mysql

安装 MHA Perl 模块:

sudo cpan install Net::SSH2sudo cpan install Bundle::DBD::mysql

步骤 2:下载并安装 MHA

下载 MHA:

wget https://github.com/yoshinagae/mha4mysql-manager/archive/v0.58.000.tar.gztar zxf v0.58.000.tar.gzcd mha4mysql-manager-0.58.000

安装 MHA:

perl Makefile.PLmakemake install

步骤 3:配置 MHA

在 MHA Manager 上,创建 MHA 配置文件:

sudo vi /etc/mha/app1.cnf

添加以下配置:

[app1]description = "MySQL MHA Cluster"candidate_master = 1check_repl = 1master = 主节点IPmaster_port = 3306ssh_user = mysqlremote庠 = 从节点IP

在 MHA Node 上,配置 MHA:

sudo vi /etc/mha/app1.cnf

添加以下配置:

[app1]description = "MySQL MHA Cluster"candidate_master = 1check_repl = 1master = 主节点IPmaster_port = 3306ssh_user = mysqlremote庠 = 从节点IP

步骤 4:启动 MHA

在 MHA Manager 上,启动 MHA:

sudo /usr/local/mha/bin/mha_check_status --app1

在 MHA Node 上,启动 MHA:

sudo /usr/local/mha/bin/mha_check_status --app1

MySQL MHA 高可用配置实战:故障转移

1. 故障转移测试

为了验证 MySQL MHA 的高可用性,可以进行故障转移测试。

步骤 1:模拟主节点故障

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

sudo /usr/local/mha/bin/mha_check_status --app1 --failed

步骤 2:执行故障转移

在 MHA Manager 上,执行故障转移:

sudo /usr/local/mha/bin/mha_start --app1 --start_secondary

步骤 3:验证故障转移

检查从节点是否已提升为主节点:

mysql -h 从节点IP -u root -pSHOW MASTER STATUS;

步骤 4:恢复主节点

在故障转移完成后,可以将原主节点恢复为从节点:

mysql -h 新主节点IP -u root -pCHANGE MASTER TO MASTER_HOST='原主节点IP', MASTER_USER='repl_user', MASTER_PASSWORD='password';START SLAVE;

MySQL MHA 的优化与注意事项

  1. 性能优化

    • 确保 MySQL 配置文件中的参数(如 innodb_buffer_pool_size)设置合理。
    • 使用半同步复制(Semi-Synchronous Replication)以提高数据一致性。
  2. 网络优化

    • 确保主从节点之间的网络带宽和延迟满足要求。
    • 使用低延迟的网络设备,减少数据传输时间。
  3. 监控与日志

    • 配置监控工具(如 Prometheus 和 Grafana)监控 MySQL 和 MHA 的运行状态。
    • 定期检查 MySQL 错误日志和 MHA 日志,及时发现和解决问题。
  4. 备份与恢复

    • 定期备份 MySQL 数据库,确保数据安全。
    • 制定完善的灾难恢复计划,以应对不可预见的故障。

结语

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

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