创建两个文件一个是数据目录,一个是日志目录
    ### 编辑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了。