MHA MySQL 快速部署指南
一、实验环境准备
服务器配置
操作系统:CentOS 7.4 (64位)
服务器数量:四台
MHA Manager节点:192.168.99.119
Master节点:192.168.99.116
Slave1节点:192.168.99.117
Slave2节点:192.168.99.118
主机名和IP地址配置
MHA Manager节点:192.168.99.119,主机名为mha
Master节点:192.168.99.116,主机名为master
Slave1节点:192.168.99.117,主机名为slave1
Slave2节点:192.168.99.118,主机名为slave2
关闭防火墙和SELinux
在所有服务器上执行以下命令:
systemctl stop firewalld systemctl disable firewalld setenforce 0 vim /etc/selinux/config SELINUX=disabled
安装MySQL数据库
在所有MySQL服务器上安装MySQL 5.7:
yum install -y https://repo.mysql.com/mysql57-community-release-el7.rpm yum install -y mysql-community-server systemctl start mysqld systemctl enable mysqld
修改MySQL配置文件
编辑/etc/my.cnf
文件,添加以下内容:
[mysqld] server_id = 1 # 各节点的server_id不同 gtid_mode=ON # 开启GTID模式 enforce_gtid_consistency=on log_bin=mysql-bin # 开启二进制日志 binlog_format=ROW # 使用基于行的日志格式 log_slave_updates=1 # 允许从库更新操作
重启MySQL服务:
systemctl restart mysqld
二、配置主从复制
创建同步用户并授权
在Master节点上执行以下命令:
CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES;
2. 获取Master节点的二进制日志文件和位置
在Master节点上执行以下命令:
SHOW MASTER STATUS;
记录下File
和Position
的值。
配置Slave节点
在每个Slave节点上执行以下命令:
CHANGE MASTER TO MASTER_HOST='master', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='记录下的File值', MASTER_LOG_POS=记录下的Position值; START SLAVE;
验证主从复制状态
在每个Slave节点上执行以下命令:
SHOW SLAVE STATUS \G;
确保Slave_IO_Running
和Slave_SQL_Running
都显示为Yes
。
三、安装和配置MHA
安装必要的Perl模块
在所有服务器上执行以下命令:
cpan App::cpanminus cpanm install DBD::mysql cpanm install Data::Dumper cpanm install JSON cpanm install Getopt::Long cpanm install Parallel::ForkManager
下载并安装MHA软件包
从GitHub上下载MHA的最新版本,并解压:
wget https://github.com/DeNA/mahakai/archive/refs/tags/0.61.tar.gz tar zxvf mahakai-0.61.tar.gz cd mahakai-0.61/
配置MHA Manager节点
将manager
目录复制到MHA Manager节点的合适位置(如/usr/local/nagios/libexec/
),并编辑app1.conf
文件,设置管理节点的IP地址和其他参数。
启动MHA Manager
在MHA Manager节点上执行以下命令:
./masterha_manager --conf=/path/to/app1.conf --verbose
四、测试故障转移功能
模拟Master节点故障
手动停止Master节点上的MySQL服务:
systemctl stop mysqld
或者直接关闭Master节点。
观察MHA自动故障转移过程
MHA Manager会自动检测到Master节点的故障,并将一个Slave节点提升为新的Master节点,整个过程应不超过30秒,并且对应用程序完全透明。
3. 恢复原Master节点并重新加入集群(可选)
如果原Master节点修复后需要重新加入集群,可以将其作为新的Slave节点进行配置,并重新同步数据。
五、FAQ常见问题解答
Q1: MHA支持哪些MySQL版本?
A1: MHA主要支持MySQL 5.5及更高版本,对于MySQL 5.7及以上版本,建议使用GTID模式以确保数据的一致性。
Q2: MHA能否与InnoDB一起使用?
A2: 是的,MHA完全兼容InnoDB存储引擎,并且推荐使用InnoDB以获得更好的性能和可靠性。
Q3: 如果Master节点硬盘损坏怎么办?
A3: 如果Master节点硬盘损坏且无法访问到最新的二进制日志文件,MHA仍然能够完成故障转移,但可能会导致部分数据丢失,建议定期备份数据并使用半同步复制来降低数据丢失的风险。