MySQL MHA應用實踐(方案實戰)

一、環境與條件
已存在主從架構環境node

主機名 IP地址 主從角色 MHA角色
leo1 192.168.3.2 Master MHA-node
leo2 192.168.3.3 slave MHA-node
leo3 192.168.3.4 slave MHA-node,MHA-manager
vip 192.168.3.6

主從確保主從狀態正常mysql

mysql>show slave status\G;
IO與SQL進程爲YES

參數更改sql

relay_log_purge = 0                 #不自動刪除relay log 以便於宕機修復數據
log_bin = /data/log/leo-bin      #從庫開啓binlog  以便於宕機修復數據
expire_logs_days=7
log-slave-updates=1

二、配置SSH
MHA在運行是會經過SSH服務鏈接到其餘節點服務器進行檢測或複製數據,所以須要集羣內可免密碼登錄。
在leo1-3內分別執行以下命令:數據庫

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

三、安裝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;

四、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

五、配置MHA管理節點app

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時會經過leo二、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

六、啓動及測試ssh

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  忽律上一次故障切換

七、配置VIP漂移ide

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
相關文章
相關標籤/搜索