在现代企业中,数据中台、数字孪生和数字可视化等技术的应用越来越广泛,而这些技术的核心离不开高效、稳定的数据库支持。MySQL 作为全球最受欢迎的开源数据库之一,其高可用性对于企业业务的连续性和数据安全性至关重要。MySQL MHA(Master High Availability) 是实现 MySQL 高可用集群的重要工具之一,能够显著提升数据库的可靠性和性能。本文将详细介绍 MySQL MHA 的配置方法,帮助企业构建高效、稳定的数据库集群。
MySQL MHA 是一个用于 MySQL 高可用性管理的工具,主要用于实现主从复制(Master-Slave)环境下的故障转移和负载均衡。它通过监控主数据库的状态,确保在主数据库发生故障时,能够自动将从数据库提升为主数据库,从而实现无缝切换,保证业务的连续性。
MHA 的核心组件包括:
在数据中台和数字孪生等场景中,数据库的高可用性是业务运行的基础。MySQL MHA 提供了以下优势:
以下是 MySQL MHA 高可用集群的详细配置步骤,适用于企业用户和个人开发者。
在配置 MySQL MHA 之前,需要确保以下环境已准备好:
在配置 MHA 之前,需要先安装 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# 添加 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在 MHA 集群中,主从复制是实现高可用性的基础。以下是配置主从复制的步骤:
修改主节点的 MySQL 配置文件:
在 /etc/my.cnf 中添加以下内容:
[mysqld]server-id = 1log_bin = /var/log/mysql/mysql-bin.logbinlog-do-db = your_database_name重启 MySQL 服务:
sudo systemctl restart mysqld创建从节点的复制用户:
在主节点上执行以下命令,创建用于复制的用户:
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'从节点 IP' IDENTIFIED BY 'password';FLUSH PRIVILEGES;修改从节点的 MySQL 配置文件:
在 /etc/my.cnf 中添加以下内容:
[mysqld]server-id = 2relay-log = /var/log/mysql/mysql-relay.log重启 MySQL 服务:
sudo systemctl restart mysqld同步数据:
在从节点上执行以下命令,同步主节点的数据:
CHANGE MASTER TO MASTER_HOST = '主节点 IP', MASTER_USER = 'repl_user', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.log', MASTER_LOG_POS = 0;启动从节点的复制:
START SLAVE;在主节点和从节点上安装 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 的配置文件 /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-keygen -t rsa -P ''# 分发公钥到从节点ssh-copy-id -i ~/.ssh/id_rsa.pub root@从节点 IP在主节点上启动 MHA 服务:
# 启动 MHA Managermha4mysql-manager --conf=/etc/mha/app1.cnf start# 检查 MHA 状态mha4mysql-manager --conf=/etc/mha/app1.cnf report为了验证 MHA 的高可用性,可以模拟主节点故障:
停止主节点的 MySQL 服务:
sudo systemctl stop mysqld观察 MHA 的反应:
MHA 会自动检测到主节点故障,并将从节点提升为主节点。
验证从节点是否成为主节点:
在从节点上执行以下命令:
SHOW SLAVE STATUS;如果 Slave_IO_Running 和 Slave_SQL_Running 都为 Yes,说明从节点已成功提升为主节点。
通过 MHA 的 Proxy 组件,可以实现读写分离和负载均衡。以下是配置 Proxy 的步骤:
安装 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配置 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启动 Proxy:
mha4mysql-proxy --conf=/etc/mha-proxy/app1.cnf start为了确保 MHA 集群的稳定运行,需要对集群进行监控和日志分析。以下是常用工具和方法:
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 pmmMySQL 日志分析:
MySQL 的错误日志和慢查询日志是排查问题的重要工具。通过分析这些日志,可以发现潜在的问题并优化数据库性能。
# 查看错误日志sudo tail -f /var/log/mysql/error.log# 查看慢查询日志sudo tail -f /var/log/mysql/slow.logMySQL MHA 是实现 MySQL 高可用集群的重要工具,能够有效提升数据库的可靠性和性能。通过本文的配置步骤,企业可以快速搭建一个高效、稳定的 MySQL 高可用集群,满足数据中台、数字孪生和数字可视化等场景的需求。
如果您对 MySQL MHA 的配置或优化有进一步的需求,欢迎申请试用我们的解决方案:申请试用&https://www.dtstack.com/?src=bbs。
申请试用&下载资料