Liunx环境下实现MySQL集群架构–MHA架构
环境准备:四台Linux环境服务器(CentOS7),其中三台安装mysql,三台mysql服务器一台作为主库,另外两台作为从库,实现主从复制
*注:建议最好使用CentOS7,本人开始使用的是CentOS8,但是在安装mha4mysql-manager的过程中出现了各种依赖问题
一、四台Linux环境服务器实现ssh互通
- 四台机器分别生成公钥和私钥(*注:使用默认值,一直按回车即可)
ssh-keygen -t rsa
- 将三台装有mysql的服务器上生成的公钥拷贝到另一台作为MHA Manager的服务器(192.168.132.132)上,密码输入服务器密码
ssh-copy-id 192.168.132.132
- 在MHA Manager服务器检查是否有另外三台装有mysql服务器的公钥
cat /root/.ssh/authorized_keys
- 将MHA Manager服务器的公钥复制到authorized_keys文件中(文件中应存有四台服务器的公钥)
cat /root/.ssh/id_rsa_pub >> /root/.ssh/authorized_keys
- MHA Manager服务器向其他三台服务器发送公钥信息,实现ssh互通
scp /root/.ssh/authorized_keys root@192.168.132.128:/root/.ssh/authorized_keys
scp /root/.ssh/authorized_keys root@192.168.132.129:/root/.ssh/authorized_keys
scp /root/.ssh/authorized_keys root@192.168.132.130:/root/.ssh/authorized_keys
- 验证是否ssh互通
ssh 192.168.132.128
二、MHA安装
以下示例在连网环境下进行,未连网环境下,需要前往http://rpm.pbone.net/自行下载安装包
- 三台装有mysql的服务器作为MHA Manager服务器的节点,需要安装mha4mysql-node,MHA Manager服务器作为一个节点,也需要安装mha4mysql-node(*注:因为mha4mysql-node依赖于perl-DBD-MySQL,所以需要先安装perl-DBD-MySQL)
yum install -y perl-DBD-MySQL
- 四台服务器分别安装mha4mysql-node
wget https://github.com/yoshinorim/mha4mysql-node/releases/download/v0.58/mha4mysql-node-0.58-0.el7.centos.noarch.rpm
rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm
- MHA Manager服务器作为manager,需要安装mha4mysql-manager,安装前需要先安装perl-Config-Tiny、perl-Log-Dispatch、perl-Parallel-ForkManager三个依赖
*注:perl-Log-Dispatch和perl-Parallel-ForkManager这两个被依赖包在yum仓库找不到,因此安装epel-release
wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm
yum install -y perl-Config-Tiny
yum install -y perl-Log-Dispatch
yum install -y perl-Parallel-ForkManager
- 安装mha4mysql-manager
wget https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-manager-0.58-0.el7.centos.noarch.rpm
rpm -ivh mha4mysql-manager-0.58-0.el7.centos.noarch.rpm
三、MHA相关文件配置
MHA Manager服务器需要为每个监控的服务器提供一个专用的配置文件
- 全局监控配置文件配置
vim /etc/masterha_default.cnf
- 监控实例配置文件配置
vi /etc/mha/app1.cnf
四、MHA配置检测
- ssh通信检测(MHA Manager服务器执行)
masterha_check_ssh --conf=/etc/mha/app1.cnf
- mysql主从复制检测
masterha_check_repl --conf=/etc/mha/app1.cnf
五、MHA Manager启动
*注:主、从库相关配置参数需保持一致,如:log_bin、binlog-ignore-db等参数,否则MHA Manager会启动失败
- MHA Manager服务器上执行启动命令
remove_dead_master_conf:该参数代表当发生主从切换后,老的主库的 ip 将会从配置文件中移除。
ignore_last_failover:如果最近failover 失败,MHA 将不会再次开始failover机制,因为这个问题可能再次发生,如果设置此参数,MHA 将会继续failover 不管上次的failover状态
nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf -- ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &
- 查看监控状态
masterha_check_status --conf=/etc/mha/app1.cnf
- 如果监控状态为not running,则执行下面命令查看启动日志
tail -n20 /var/log/mha/app1/manager.log
六、测试主从库自动切换
- 通过查看日志命令监控切换日志变化
- 将主库mysql服务关闭,监控日志变化,由日志变化可以看出,主库已经关闭,其中一台从库切换为了主库