学习前提:
1>安装三台虚拟机,yum源配置可用,配置网卡可互相通信(或者三台云服务器);
2>掌握mysql5.7在linux上的安装,初始化,启动等;
3>掌握GTID主从复制搭建能力;
(脚本和配置文件Demo需要请和作者联系)
MHA原理:
MHA的目的在于维持MySQL Replication中master库的高可用性,其最大的特点是可以修复多个slave之前的差异日志,最终使所有slave保持数据一致,然后从中选择一个充当新的master,并将其他slave指向它。当master出现故障时,可以通过对比slave之前IO thread读取主库binlog的position号,选择最接近的slave作为备选主库(备胎)。其他的从库可以通过与备选主库对比生成差异的中继日志,在备选主库上应用从原来master保存的binlog,同时将备选主库提升为master。最后在其他slave上应用相应的差异中继日志并从新的master开始复制。
manager节点发送心跳信息监测

1、搭建主从
使用GTID,一主两从模式,步骤略
2、搭建三节点互信
三个都做
[root@localhost ~]# cd .ssh
[root@localhost .ssh]# ls
known_hosts
[root@localhost .ssh]# ssh-keygen
两从
scp id_rsa.pub 192.168.168.101:~/.ssh/id_rsa.pub1
scp id_rsa.pub 192.168.168.101:~/.ssh/id_rsa.pub2
主
cat id_rsa.pub id_rsa.pub1 id_rsa.pub2 > authorized_keys
chmod 600 authorized_keys
scp authorized_keys 192.168.168.102:~/.ssh/
scp authorized_keys 192.168.168.103:~/.ssh/
测试
ssh 192.168.168.102 date
3、搭建mhanode节点
拷贝文件(略)
三个安装环境
先挂载yum源
chown root:root -R dev/sr0
mount dev/sr0 mnt/centos
yum -y install perl-DBD-MySQL
yum -y install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
yum -y install perl-devel perl-CPAN
tar -xvzf mha4mysql-node-0.57.tar.gz
mkdir -p etc/mha/mhanode
cp -r mha4mysql-node-0.57/* etc/mha/mhanode
cd etc/mha/mhanode
perl Makefile.PL
make
make install
出现两个loaded即可
perl Makefile.PL
#####[Core Features]
#####- DBI ...loaded. (1.627)
#####- DBD::mysql ...loaded. (4.023)
#####*** Module::AutoInstall configuration finished. make make install
make
make install
4、搭建MHAMANAGER节点
slave 3(从机第二台)上安装
tar -xvf mha4mysql-manager-0.57.tar.gz
yum install -y perl-ExtUtils-Embed
yum install -y perl-Time-HiRes

或者进入到拷贝文件目录 yum -y localinstall *.rpm
安装MANAGER节点
tar -xvf mha4mysql-manager-0.57.tar.gz
mkdir -p etc/mha/mhamanager
cp -rf mha4mysql-manager-0.57/* etc/mha/mhamanager
cd etc/mha/mhamanager
perl Makefile.PL
make
make install
5、MHA配置文件
mkdir -p etc/mha/app1
vim etc/mha/app1.cnf

6、编辑切换脚本

7、赋予脚本权限
chmod +x etc/mha/master_ip_failover
chmod +x master_ip_online_change
8、利用MHA工具检测
检测SSH
/etc/mha/mhamanager/bin/masterha_check_ssh --conf=/etc/mha/app1.cnf

检测主从复制
/etc/mha/mhamanager/bin/masterha_check_repl --conf=/etc/mha/app1.cnf

9、 主库拉起vip启动
ifconfig ens33:0 192.168.168.100 up
10、启动mha
nohup /etc/mha/mhamanager/bin/masterha_manager --conf=/etc/mha/app1.cnf --ignore_last_failover > /tmp/mha_manager.log < /dev/null 2>&1 &
11、 验证成功并查看显示状态
/etc/mha/mhamanager/bin/masterha_check_status --conf=/etc/mha/app1.cnf app1




