第4天 二篇、【MHA】故障切換

來源:互聯網
上載者:User

標籤:mha

MHA故障切換:

一、Master自動監控和容錯移轉

在預設8小時內連續出現故障,則不會切換,可以通過設定--last_failover_minute=(minutes)來縮短時間,但是如果設定了--ignore_last_failover參數,那麼該步驟省略。

        與《MHA高可用架構介紹》中恢複過程一樣,這裡會添加詳細操作:

       1) MHA啟動之後:

            自動檢測主庫的binlog檔案是否存在(通過Executing SSH check script: save_binary_logs)

            自動檢測網路連接(通過Executing secondary network check script: /usr/local/bin/masterha_secondary_check_3307) ---- 我自己的環境截取

       2) MHA宕機之後:

            第一步:配置檢查。存活從庫(192.168.143.242:3307) 

            第二步:通過SSH關閉死去的從庫(我這裡沒有配置shutdown script,所以無法將主機關閉)******************

            第三步:master恢複階段

   * 首先檢查最新的slave和最老的slave所接收的master上的binlog都是否為mysql-bin.000006:2462   * 然後儲存死去master 的binlog日誌(192.168.143.241:3307): save_binary_logs --command=save --start_file=mysql-bin.000006  --start_pos=2462 --binlog_dir=/data/mysql/mysql_3307/binlog --output_file=/var/log/masterha/app2/saved_master_binlog_from_VCrawlerDB-M_3307_20161129170047.binlog --handle_raw_binlog=1 --disable_log_bin=0 --manager_version=0.56  scp儲存到本地(死去的master)   * 再提升一個新的master,檢查MHA的app2.cnf設定檔是否設定了candidate_master=1參數,如果設定了,提升為新的master;未設定,按IP順序提升   * 識別死去的master與新master資料差異,如果slave的資料比死去的master要老,那麼把這個檔案scp到slave上,通過Executing command: apply_diff_relay_logs 識別差異日誌並補充資料   * 產生 Statement should be: CHANGE MASTER TO MASTER_HOST=‘VCDB-S or 192.168.143.242‘, 產生新Master的change   * 將虛擬IP漂移到新master中Executing master IP activate script: /usr/local/bin/master_ip_failover_app2 --command=start,並關閉唯讀參數set global read_only=0    * 恢複最老的slave資料,如果最老的slave的sql_thread還未執行完,那麼要先等執行完成,然後檢查最老slave執行完成的relay log和position,與最新的master進行對比。   * 當最老的slave把最新master上的relay log補齊之後,MHA將死去master缺失的那部分binlog發送給最老的slave,通過apply_diff_relay_logs命令將資料補齊,之後再使用上面所產生的change master to與最新master進行同步複製關係。



                           

二、Master手工容錯移轉

           

    通過masterha_master_switch --conf=/etc/mha/app2.cnf --master_state=dead --ignore_last_failover --dead_master_host=Master --dead_master_ip=192.168.143.241 --dead_master_port=3307實現



三、線上平滑切換

    masterha_master_switch --conf=/etc/app1.cnf --master_state=alive --orig_master_is_new_slave --running_updates_limit=1

切換包括以下方面:

        第一步:

        1)配置檢查:當前存活的master與slave

        2)輸入yes,在原master上執行flush no_write_to_binlog tables,強制將開啟的表關閉,業務繁忙時,會耗費很長時間。

        3)輸入yes,確認把master切換到slave上

        4)拒絕更新,防止原主庫被寫入資料

            * 將原Master上的虛擬IP清除

            * 設定原master為唯讀模式,set global read_only=1

            * kill掉所有應用連結的線程

            * 執行flush tables with read lock全域鎖

            * 在原master上執行select master_post_wait(mysqld-bin.000023:234324),等待slave把relay log執行完,並產生新的change master to 語句。

        第二步:

1) 將VIP切換到slave1上

2) 設定slave1(新提升的master)為讀寫入模式set global read_only=0

3) 在slave2上執行change master to slave1

4) 在原master上解除鎖表unlock tables

5) 在原master上執行change master slave1

6) 在slave1(新提升的master)上執行reset slave all,清空之前的同步複製資訊

7) 整個切換流程結束


上面的過程,是我根據自己的線上測試日誌與書本結合寫的。大家實驗過程中,慢慢的去看測試日誌,就能瞭解到整個過程的。


本文出自 “崛起” 部落格,請務必保留此出處http://binbinwudi8688.blog.51cto.com/3023365/1878224

第4天 二篇、【MHA】故障切換

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.