创建两个文件一个是数据目录,一个是日志目录
### 编辑mha配置文件
vim /etc/mha/app1.cnf
[server default] ##服务相关的总体配置
manager_log=/var/log/mha/app1/manager ##日志存放在那个位置
manager_workdir=/var/log/mha/app1 ## 工作路径随便放
master_binlog_dir=/data/binlog/ ## 和主库的二进制位置有关,要一致
user=mha ## mha用户 需要在主库创建数据库用户,监控数据库的用户
password=mha ## mha用户密码
ping_interval=2 ## 心跳监测的频率,没过多少秒,一个检测四次
repl_password=123 ## 复制用户的账号
repl_user=repl ##复制用户的密码
ssh_user=root ##登录系统的用户互信账号
[server1] ## 节点信息 server+数字
hostname=10.0.0.51 ##ip地址
port=3306 ##端口
[server2]
hostname=10.0.0.52
candidate_master=1 ##备用主,如果主库宕机他优先选主
port=3306
[server3]
hostname=10.0.0.53
port=3306
# 状态检查
## 互信检查
masterha_check_ssh —conf=/etc/mha/app1.cnf
## 主从状态检查
masterha_check_repl —conf=/etc/mha/app1.cnf
# 开启MHA(db03):
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 &
# 查看MHA状态
[root@db03 ~]# masterha_check_status —conf=/etc/mha/app1.cnf
MHA软件结构介绍
manager 组件
masterha_manger 启动MHA
masterha_check_ssh 检查MHA的SSH配置状况
masterha_check_repl 检查MySQL复制状况
masterha_master_monitor 检测master是否宕机
masterha_check_status 检测当前MHA运行状态
masterha_master_switch 控制故障转移(自动或者手动)
masterha_conf_host 添加或删除配置的server信息
node 组件
save_binary_logs 保存和复制master的二进制日志
apply_diff_relay_logs 识别差异的中继日志事件并将其差异的事件应用于其他的
purge_relay_logs 清除中继日志(不会阻塞SQL线程)
应用透明—-VIP
vip : 10.0.0.55/24
vip 故障转移脚本
上传脚本文件到/usr/local/bin 解压
[root@db03 mha_script]# cp -a /data/mha_script/ /usr/local/bin
修改权限
[root@db03 bin]# chmod +x /usr/local/bin/
修改内容
[root@db03 bin]# cp master_ip_failover master_ip_failover.bak
my $vip = ‘10.0.0.55/24’; #vip地址
my $key = ‘1’; ##网卡名冒号1数字随便
my $if = ‘ens33’; ##网卡名要跟实体机一致
my $ssh_start_vip = “/sbin/ifconfig $if:$key $vip”; ##启动vip
my $ssh_stop_vip = “/sbin/ifconfig $if:$key down”; ##关闭vip
my $ssh_Bcast_arp= “/sbin/arping -I $if -c 3 -A 10.0.0.55”; ##快速更新mac地址
修改Manager 配置文件
vim /etc/mha/app1.cnf
master_ip_failover_script=/usr/local/bin/master_ip_failover## 加在 server default 标签下,加入此行,让MHA可以识别这个脚本 ,vip脚本也是应用透明
重启MHA
[root@db03 bin]# masterha_stop —conf=/etc/mha/app1.cnf
[root@db03 bin]# 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 &
手工在主库添加VIP
[root@db03 bin]# masterha_check_status —conf=/etc/mha/app1.cnf
[root@db02 ~]# ifconfig ens33:1 10.0.0.55/24
效果测试
使用navicat 连接测试MHA vip功能。
生产注意:
1. 自带脚本,不能跨网段的,必须在局域网中应用。打通二层网络。而且不是特别稳定。
2. 如果需要跨网段,推荐使用智能DNS。
3. 可以配合ProxySQL类似的中间件,就可以不使用VIP了。
