一、MHA集群概述
MAH的工作过程
二、 部署MHA集群
2.1 安装依赖包
[root@web1 mha]# yum -y install perl-*
配置ssh密钥对认证登录
[root@web1 mha]# yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm
[root@web1 mha]# tar -xvf mha4mysql-manager-0.56.tar.gz
[root@web1 mha]# cd mha4mysql-manager-0.56/
[root@web1 mha4mysql-manager-0.56]# perl Makefile.PL #显示差什么就安装什么
[root@web1 mha4mysql-manager-0.56]# yum list | grep -i CPAN
[root@web1 mha4mysql-manager-0.56]# yum -y install perl-CPAN*
[root@web1 mha4mysql-manager-0.56]# perl Makefile.PL
[root@web1 mha4mysql-manager-0.56]# make && make install
2.2 创建并编辑主配置文件
管理服务器
[root@web1 ~]# mkdir /etc/mha
[root@web1 ~]# cp app1.cnf master_ip_failover /etc/mha/
[root@web1 ~]# cd /etc/mha/
[root@web1 mha]# chmod +x master_ip_failover //加执行权限
[root@web1 mha]# cat app1.cnf
[server default] //管理服务默认配置
manager_log=/etc/mha/manager.log //日志文件
manager_workdir=/etc/mha //工作目录
master_ip_failover_script=/etc/mha/master_ip_failover //故障切换脚本
repl_user=mao //数据同步授权用户
repl_password=123qqq...A //密码
ssh_port=22 //ssh服务端口
ssh_user=root //访问ssh服务用户
user=root //监控用户
password=123qqq...A //密码
[server1] //指定第一台数据库服务器
candidate_master=1 //竞选主服务器
hostname=192.168.4.51 //服务器IP地址
port=3306 //服务端口
[server2] //指定第二台数据库服务器
.....
[server3]
......
[root@web1 mha]# vim master_ip_failover
my $vip = '192.168.4.100/24'; # Virtual IP 定义VIP地址
my $key = "1"; //定义地址编号
my $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip"; //绑定vip地址
my $ssh_stop_vip = "/sbin/ifconfig ens33:$key down"; //释放vip地址
2.3 配置数据库服务器 51 52 53
51、52、53的操作相同
51 52 53 安装mha_node软件包
[root@proxy mha]# yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm
51上配置VIP
[root@proxy mha]# ifconfig ens33:1 192.168.4.100/24
[root@proxy mha]# ifconfig ens33:1
监控用户root
[root@proxy mha]# mysql -uroot -p123qqq...A -e 'grant all on *.* to root@"%" identified by "123qqq...A"'
授权用户mao
[root@proxy mha]# mysql -uroot -p123qqq...A -e 'grant replication slave on *.* to mao@"%" identified by "123qqq...A"'
在51、52、53 数据库服务器启用 主从角色半同步复制模式、禁止自动删除中继日志文件
[root@proxy mha]# vim /etc/my.cnf #以51为例
log_bin=ppp
server_id=51
#
plugin-load ="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so" //加载模块
rpl_semi_sync_master_enabled=1 //启用master模块
rpl_semi_sync_slave_enabled=1 //启用slave模块
relay_log_purge=0 //禁止自动删除中继日志文件
重启 51、52、53 主机的数据库服务
systemctl restart mysqld
2.4 在管理主机 检查配置
[root@web1 mha]# masterha_check_ssh --conf=/etc/mha/app1.cnf
[root@web1 mha]# masterha_check_repl --conf=/etc/mha/app1.cnf
2.5 启动管理服务
[root@web1 mha]# masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover
[root@web1 ~]# masterha_check_status --conf=/etc/mha/app1.cnf
2.6 测试
关掉51的mysql服务(管理服务器的mha就会停掉),查看52是否有VIP(ifconfig ens33:1)
如52上有VIP:192.168.4.100,说明已成功
如要保持mysql的高可用,还需要在开启MHA服务