MySQL--MHA原理

來源:互聯網
上載者:User

標籤:手動   mon   mysql高可用   調用   slave   sql   從庫   介面   googl   

##==============================================================##
MHA(Master High Availability)是一種MySQL高可用解決方案,由日本DeNA公司開發,主要用於在故障切換和主從提升時進行快速切換,並最大程度保證資料一致性。
MHA主要由兩部分組成:
1、MHA Manager(管理節點),管理節點部署在群集之外,主要用於定期監測群集中的主節點,並在主從切換時負責管理調度切換流程。
2、MHA Node(資料節點),資料節點部署在每個叢集節點上,負責在主從切換時對比和應用差異日誌。


管理節點主要包含以下工具:
masterha_check_ssh              檢查MHA的SSH配置狀況
masterha_check_repl             檢查MySQL複製狀況
masterha_manger                 啟動MHA
masterha_check_status           檢測當前MHA運行狀態
masterha_master_monitor         檢測master是否宕機
masterha_master_switch          控制容錯移轉(自動或者手動)
masterha_conf_host              添加或刪除配置的server資訊

資料節點主要包含以下工具:
save_binary_logs                儲存和複製master的二進位日誌
apply_diff_relay_logs           識別差異的中繼日誌事件並將其差異的事件應用於其他的slave
filter_mysqlbinlog              去除不必要的ROLLBACK事件(MHA已不再使用這個工具)
purge_relay_logs                清除中繼日誌(不會阻塞SQL線程)

##==============================================================##
MHA知識點:
1、使用SHOW SLAVE STATUS擷取各從庫的複製進度,確定擁有主庫Binlog最全的從庫
    A)    Master_Log_File+Read_Master_Log_Pos確定從庫讀取到主庫Binlog位置
    B)    Relay_Log_File+Relay_Log_Pos確定從庫存放主庫Binlog位置
    C)    Relay_Master_Log_File+Exec_Master_Log_Pos確定從庫執行主庫Binlog位置


2、在從庫每個Relay-log的頭部,記錄主庫和從庫的版本資訊,還記錄該relay-log存放的主庫binlog開始位置
 

2、從庫的Relay-log中每個binlog事件都包含該事件在主庫上的位置資訊,根據兩個主庫binlog位置點從relay-log中可以獲得兩個從庫的差異日誌。每個binlog事務總是以BEGIN為開始標誌,以COMMI結束,如果從庫未擷取到主庫完整的BINLOG事務,那麼該事務不會被從庫應用,以保障資料一致性。
 

3、當複製主庫執行個體宕機時,如果主程式庫伺服器仍可以使用SSH訪問,可以使用mysqlbinlog擷取到主庫最後的BINLOG。

4、使用SELECT MASTER_POS_WAIT(master_log_file,read_master_log_pos)來等待從庫應用主庫BINLOG到指定位置。

5、MHA會預設關閉RELAYLOG的清理,如果要清理RALAYLOG,可以使用下面命令:
SET GLOBAL relay_log_purge=1;
FLUSH LOGS;
SET GLOBAL relay_log_purge=0;


##==============================================================##
MHA工作原理:
 

##==============================================================##
MHA主要特性:
1、MHA切換不依賴執行個體使用儲存引擎和BINLOG格式;
2、MHA不會增加MySQL伺服器效能開銷,除MHA管理節點外無需增加額外伺服器;
3、在MySQL伺服器上部署MHA資料節點不會影響當前執行個體運行;
4、MHA實現自動故障切換,也可以手動觸發線上切換;
5、MHA可以實現秒級的故障切換;
6、MHA可以將任意slave提升master,也可以在切換時指定master候選節點;
7、MHA提供擴充介面,允許在MHA切換過程中的特定時間點執行使用者自訂指令碼。

##==============================================================##
MHA擴充性
A)seconary_check_script
當檢測到master節點串連失敗時調用,從多個網路路徑判斷master是否發生宕機。

B)shutdown_script
在容錯移轉前調用,可以通過SSH登入到master節點進行資料庫關閉和伺服器關機等操作。

C)master_ip_failover_script
在容錯移轉前和轉移到新master節點後調用,用於切換群集使用的VIP或網域名稱或其他動作。

D)report_script
在故障切換完成後被調用,由於通知故障切換的執行結果。

##==============================================================##
MHA支援和限制:
1、只支援BINLOG V4版本,要求MySQL 5.0或更高版本。
2、候選master節點必須開啟log-bin參數,如果所有從節點都為開啟,則不進行容錯移轉。
3、在MHA 0.52版本前不支援多master模式
4、MHA預設不支援多級主從複製,通過修改設定檔和設定multi_tier_slave參數
##==============================================================##

MHA原理:https://code.google.com/p/mysql-master-ha/wiki/HowMHAWorks
MHA原理PPT:http://www.slideshare.net/matsunobu/automated-master-failover
MHA安裝包:https://github.com/linyue515/mysql-master-ha/

##==============================================================##

MySQL--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.