MHA(Master High Availability)是一款開源的mysql高可用程序,MHA 搭建的前提是MySQL集羣中已經搭建了MySql Replication環境,有了Master/Slave節點。做用是監測Master節點故障時會提高主從複製環境中擁有最新數據的Slave節點成爲新的master節點。同時,在切換master期間,MHA會經過從其餘的Slave節點來獲取額外的信息來避免一致性的問題,整個的切換過程對於應用程序而言是徹底透明的。MHA還提供了master節點在線切換功能,即按需切換master/slave節點。mysql
MHA Manager: 一般單獨部署在一臺獨立機器上管理 master/slave 集羣,每一個master/slave 集羣能夠理解爲一個application。sql
MHA Node: 運行在每臺mysql 服務器(master/slave)上。它經過監控具有解析和清理logs功能來加快故障轉移。服務器
MHA 在自動切換的過程當中會從宕掉的MySql master節點中保存二進制日誌,以保證數據的完整性。可是若是master節點直接宕機了呢,或者網絡直接不能聯通了呢?MHA就沒有辦法獲取master的二進制日誌,也就沒有辦法保證數據的完整性了。這也就是爲何MHA應該與MySql主從複製結合起來。這樣的話,只要有一個slave節點從master節點複製到了最新的日誌,MHA就能夠將最近的二進制日誌應用到其餘的slave節點上,這樣就能夠最大限度上保證數據的完整性。網絡
從宕機崩潰的master保存二進制日誌事件(binlog events);架構
識別含有最新更新的slave;app
應用差別的中繼日誌(relay log)到其餘的slave;ssh
應用從master保存的二進制日誌事件(binlog events);工具
提高一個slave爲新的master;spa
使其餘的slave鏈接新的master進行復制;線程
Manager節點:
masterha_check_ssh:MHA依賴的環境監測工具;
masterha_check_ssh: MySql複製環境檢測工具;
masterha_manager: MHA 服務主程序;
masterha_check_status: MHA運行狀態探測工具;
masterha_master_monitor: MySql master節點可用性檢測工具;
masterha_switch: master 節點切換工具;
masterha_conf_host: 添加或刪除配置的節點;
masterha_stop: 關閉MHA服務的工具;
Node節點:
save_binary_logs:保存和複製master節點的二進制日誌;
apply_diff_relay_logs: 識別差別的中繼日誌事件並應用於其餘的slave;
purge_relay_logs:清除中集日誌(不會阻塞SQL線程);