千家信息网

MySQL MHA应用实践(方案实战)

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,1、环境与条件已存在主从架构环境主机名IP地址主从角色MHA角色leo1192.168.3.2MasterMHA-nodeleo2192.168.3.3slaveMHA-nodeleo3192.168
千家信息网最后更新 2025年02月01日MySQL MHA应用实践(方案实战)

1、环境与条件
已存在主从架构环境

主机名IP地址主从角色MHA角色
leo1192.168.3.2MasterMHA-node
leo2192.168.3.3slaveMHA-node
leo3192.168.3.4slaveMHA-node,MHA-manager
vip192.168.3.6

主从确保主从状态正常

mysql>show slave status\G;IO与SQL进程为YES

参数更改

relay_log_purge = 0                 #不自动删除relay log 以便于宕机修复数据log_bin = /data/log/leo-bin      #从库开启binlog  以便于宕机修复数据expire_logs_days=7log-slave-updates=1

2、配置SSH
MHA在运行是会通过SSH服务连接到其他节点服务器进行检测或复制数据,因此需要集群内可免密码登陆。
在leo1-3内分别执行如下命令:

    ssh-keygen -t rsassh-copy-id -i ~/.ssh/id_rsa.pub 192.168.3.2ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.3.3ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.3.4

3、安装MHA Node
对所有mysql节点安装MHA Node

        1)安装perl语言         yum install perl-DBD-MySQL  -y   ###因为MHA用perl 开发         2)安装MHA Node         rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm     下载地址         https://code.google.com/archive/p/mysql-master-ha/downloads         3)创建命令软连接方便使用:         ls -s /app/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog         ls -s /app/mysql/bin/mysql  /usr/bin/mysql         4)检查MHA账户         grant all privileges on *.* to mha@'192.168.3%'  identified by 'mha';         select user,host from mysql.user;

4、MHA-Manager
Manager 可以安装在任何一台机器上。

    1)使用epel源安装perl环境        wget -O /etc/yum.repo.d/epel.repo  http://mirrors.aliyum.com/repo/eprl-6.repo    2)安装管理节点以来包        yum intall -u perl-Config-Tiny* epel-release perl-Log-Dispatch* perl-Parallel* per-Time*    3)安装MHA-Node            rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm    4)安装MHA-Manger        rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm

5、配置MHA管理节点

        mkdir -p /etc/mha        mkdir -p /var/log/mha/app1        vi /etc/mha/app1.cnf        [server default]        manager_log=/var/log/mha/app1/manager.log           manager_workdir=/var/log/mha/app1.log        mater_binlog_dir=/app/mysql/data   ##MHA保存主库binlog路径        user=mha                                          ##mysql 数据库授权yonghu        password=mha        ping_interval=2                                ##监控ping包时间间隔        repl_user=rep                                  ##主从复制用户        repl_password=leo123        ssh_user=root        repot_script=/usr/local/send_report      ##故障发生后触发脚本        secondary_check_script=/usr/local/bin/masterha_secondary_check -s leo3 -s leo2 --user=root --master_host=leo1 --master_ip=192.168.3.2 --master_port=3306        ########manager 联系不上leo1时会通过leo2、leo3 查看leo1的状态        shutdown_script=""        [server1]        hostname=192.168.3.2        port=3306        [server2]        hostname=192.168.3.4        port=3306        candidate_master=1             ##设定此参数后server2 会将优先升为主库        check_repl_delay=0              ##MHA忽律主从复制延迟        [server3]        hostname=192.168.3.3        port=3306

6、启动及测试

1)检测ssh免密登陆
    master_check_ssh -conf=/etc/mha/app1.cnf
2)检测主从复制状态
    master_check_repl -conf=/etc/mha/app1.cnf
3)启动MHA
    nohup master_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failver < /dev/null > /var/log/mha/app1/manager.log 2>&1 &    ##remove_dead_master_conf 在配置文件中删除master信息    ##ignore_last_failver  忽律上一次故障切换

7、配置VIP漂移

   1)利用keepalived    2)在配置文件中填入以下参数    master_ip_failover_script=/usr/local/bin/master_ip_failover    3)在脚本中加入以下参数    my = $vip= '192.168.3.6';    my $key=  0    my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip";    my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down";    chmod +x /etc/mha/master_ip_failover
0