博客 MySQL MHA高可用集群配置方法

MySQL MHA高可用集群配置方法

   数栈君   发表于 2025-10-03 08:55  117  0

MySQL MHA 高可用集群配置方法

在现代企业中,数据中台、数字孪生和数字可视化等技术的应用越来越广泛,而这些技术的核心离不开高效、稳定的数据库支持。MySQL 作为全球最受欢迎的开源数据库之一,其高可用性对于企业业务的连续性和数据安全性至关重要。MySQL MHA(Master High Availability) 是实现 MySQL 高可用集群的重要工具之一,能够显著提升数据库的可靠性和性能。本文将详细介绍 MySQL MHA 的配置方法,帮助企业构建高效、稳定的数据库集群。


什么是 MySQL MHA?

MySQL MHA 是一个用于 MySQL 高可用性管理的工具,主要用于实现主从复制(Master-Slave)环境下的故障转移和负载均衡。它通过监控主数据库的状态,确保在主数据库发生故障时,能够自动将从数据库提升为主数据库,从而实现无缝切换,保证业务的连续性。

MHA 的核心组件包括:

  1. Manager:负责监控主数据库和从数据库的状态,并在故障发生时触发故障转移。
  2. Node:用于执行具体的数据库操作,如复制数据、提升从数据库为主数据库等。
  3. Proxy(可选):用于实现读写分离和负载均衡,提升集群的整体性能。

为什么选择 MySQL MHA?

在数据中台和数字孪生等场景中,数据库的高可用性是业务运行的基础。MySQL MHA 提供了以下优势:

  1. 高可用性:通过自动故障转移,确保数据库集群在主节点故障时快速恢复。
  2. 低延迟:MHA 的设计使得故障转移过程几乎无感知,业务中断时间极短。
  3. 负载均衡:通过读写分离和负载均衡,提升数据库的整体性能。
  4. 兼容性:支持多种 MySQL 版本和配置,适用于不同的应用场景。

MySQL MHA 高可用集群配置步骤

以下是 MySQL MHA 高可用集群的详细配置步骤,适用于企业用户和个人开发者。

1. 环境准备

在配置 MySQL MHA 之前,需要确保以下环境已准备好:

  • 操作系统:Linux(推荐 CentOS 7 或 Ubuntu 18.04)。
  • MySQL 版本:MySQL 5.7 或更高版本。
  • 硬件资源:主节点和从节点需要足够的 CPU、内存和存储资源。
  • 网络配置:确保主节点和从节点之间网络通信正常。

2. 安装 MySQL

在配置 MHA 之前,需要先安装 MySQL。以下是安装步骤:

在 CentOS 上安装 MySQL:

# 添加 MySQL YUM 仓库sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm# 安装 MySQLsudo yum install -y mysql-community-server# 启动 MySQL 服务sudo systemctl start mysqld# 设置 MySQL 自动启动sudo systemctl enable mysqld

在 Ubuntu 上安装 MySQL:

# 添加 MySQL GPG 仓库sudo apt-get install -y wget software-properties-commonsudo wget https://dev.mysql.com/get/mysql-apt-config_0.8.15-1_all.debsudo dpkg -i mysql-apt-config_0.8.15-1_all.debsudo apt-get update# 安装 MySQLsudo apt-get install -y mysql-server# 启动 MySQL 服务sudo systemctl start mysql# 设置 MySQL 自动启动sudo systemctl enable mysql

3. 配置主从复制

在 MHA 集群中,主从复制是实现高可用性的基础。以下是配置主从复制的步骤:

配置主节点:

  1. 修改主节点的 MySQL 配置文件

    /etc/my.cnf 中添加以下内容:

    [mysqld]server-id = 1log_bin = /var/log/mysql/mysql-bin.logbinlog-do-db = your_database_name
  2. 重启 MySQL 服务

    sudo systemctl restart mysqld
  3. 创建从节点的复制用户

    在主节点上执行以下命令,创建用于复制的用户:

    GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'从节点 IP' IDENTIFIED BY 'password';FLUSH PRIVILEGES;

配置从节点:

  1. 修改从节点的 MySQL 配置文件

    /etc/my.cnf 中添加以下内容:

    [mysqld]server-id = 2relay-log = /var/log/mysql/mysql-relay.log
  2. 重启 MySQL 服务

    sudo systemctl restart mysqld
  3. 同步数据

    在从节点上执行以下命令,同步主节点的数据:

    CHANGE MASTER TO    MASTER_HOST = '主节点 IP',    MASTER_USER = 'repl_user',    MASTER_PASSWORD = 'password',    MASTER_LOG_FILE = 'mysql-bin.log',    MASTER_LOG_POS = 0;
  4. 启动从节点的复制

    START SLAVE;

4. 安装和配置 MHA

安装 MHA:

在主节点和从节点上安装 MHA:

# 下载 MHA 二进制文件wget https://github.com/yoshinari-natsume/mha4mysql-manager/releases/download/v0.5.0/mha4mysql-manager-0.5.0.tar.gz# 解压文件tar -zxvf mha4mysql-manager-0.5.0.tar.gz# 移动到安装目录mv mha4mysql-manager-0.5.0 /usr/local/mha# 设置环境变量echo 'export PATH=/usr/local/mha/bin:$PATH' >> ~/.bashrcsource ~/.bashrc

配置 MHA:

在主节点上创建 MHA 的配置文件 /etc/mha/app1.cnf

[app1]description = "MySQL MHA Cluster"node1 = 127.0.0.1node2 = 127.0.0.2[mysql_bin_path]bin = /usr/bin/mysqlbinlog[master]host = 127.0.0.1user = mha_userpassword = mha_passwordport = 3306[slave]host = 127.0.0.2user = mha_userpassword = mha_passwordport = 3306[ssh]node1_ssh_user = rootnode1_ssh_password = root_passwordnode2_ssh_user = rootnode2_ssh_password = root_password

配置 SSH 密钥:

为了实现无密码登录,需要在主节点和从节点之间配置 SSH 密钥:

# 生成 SSH 密钥ssh-keygen -t rsa -P ''# 分发公钥到从节点ssh-copy-id -i ~/.ssh/id_rsa.pub root@从节点 IP

5. 启动 MHA 服务

在主节点上启动 MHA 服务:

# 启动 MHA Managermha4mysql-manager --conf=/etc/mha/app1.cnf start# 检查 MHA 状态mha4mysql-manager --conf=/etc/mha/app1.cnf report

6. 测试故障转移

为了验证 MHA 的高可用性,可以模拟主节点故障:

  1. 停止主节点的 MySQL 服务

    sudo systemctl stop mysqld
  2. 观察 MHA 的反应

    MHA 会自动检测到主节点故障,并将从节点提升为主节点。

  3. 验证从节点是否成为主节点

    在从节点上执行以下命令:

    SHOW SLAVE STATUS;

    如果 Slave_IO_RunningSlave_SQL_Running 都为 Yes,说明从节点已成功提升为主节点。


MySQL MHA 的高级功能

1. 负载均衡

通过 MHA 的 Proxy 组件,可以实现读写分离和负载均衡。以下是配置 Proxy 的步骤:

  1. 安装 Proxy

    在另一台服务器上安装 MHA Proxy:

    wget https://github.com/yoshinari-natsume/mha4mysql-proxy/releases/download/v0.5.0/mha4mysql-proxy-0.5.0.tar.gztar -zxvf mha4mysql-proxy-0.5.0.tar.gzmv mha4mysql-proxy-0.5.0 /usr/local/mha-proxy
  2. 配置 Proxy

    创建 Proxy 的配置文件 /etc/mha-proxy/app1.cnf

    [app1]description = "MySQL MHA Cluster"node1 = 127.0.0.1node2 = 127.0.0.2[mysql_bin_path]bin = /usr/bin/mysqlbinlog[master]host = 127.0.0.1user = mha_userpassword = mha_passwordport = 3306[slave]host = 127.0.0.2user = mha_userpassword = mha_passwordport = 3306[ssh]node1_ssh_user = rootnode1_ssh_password = root_passwordnode2_ssh_ssh_user = rootnode2_ssh_password = root_password
  3. 启动 Proxy

    mha4mysql-proxy --conf=/etc/mha-proxy/app1.cnf start

2. 监控和日志分析

为了确保 MHA 集群的稳定运行,需要对集群进行监控和日志分析。以下是常用工具和方法:

  1. Percona Monitoring and Management (PMM)

    PMM 是一个开源的数据库监控和管理工具,支持 MySQL、MariaDB 等数据库。通过 PMM,可以实时监控数据库的性能和状态。

    # 安装 PMMcurl -SOL https://www.percona.com/downloads/pmm/pmm-2.25.0-1.el7.x86_64.rpmsudo yum install -y pmm-2.25.0-1.el7.x86_64.rpm# 启动 PMMsudo systemctl start pmm
  2. MySQL 日志分析

    MySQL 的错误日志和慢查询日志是排查问题的重要工具。通过分析这些日志,可以发现潜在的问题并优化数据库性能。

    # 查看错误日志sudo tail -f /var/log/mysql/error.log# 查看慢查询日志sudo tail -f /var/log/mysql/slow.log

注意事项

  1. 数据备份:在配置 MHA 之前,务必备份数据库,防止数据丢失。
  2. 网络延迟:确保主节点和从节点之间的网络通信稳定,避免因网络问题导致故障转移失败。
  3. 权限管理:严格控制 MHA 用户的权限,防止未授权访问。
  4. 监控和维护:定期监控集群状态,及时发现和解决问题。

总结

MySQL MHA 是实现 MySQL 高可用集群的重要工具,能够有效提升数据库的可靠性和性能。通过本文的配置步骤,企业可以快速搭建一个高效、稳定的 MySQL 高可用集群,满足数据中台、数字孪生和数字可视化等场景的需求。

如果您对 MySQL MHA 的配置或优化有进一步的需求,欢迎申请试用我们的解决方案:申请试用&https://www.dtstack.com/?src=bbs

申请试用&下载资料
点击袋鼠云官网申请免费试用: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条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

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