做爲前提條件,應先配置MySQL複製,並設置SSH公鑰免密碼登陸。MySQL5.5 引入了一種半同步複製功能,該功能能夠確保主服務器和訪問鏈中至少一臺從服務器之間的數據一致性和冗餘。node
MHA由Node和Manager組成,Node運行在每一臺MySQL服務器上,也就是說,無論是MySQL主服務器,仍是MySQL從服務器,都要安裝Node,而Manager一般運行在獨立的服務器上,但若是硬件資源吃緊,也能夠用一臺MySQL從服務器來兼職Manager的角色。mysql
安裝Node:sql
shell> yum install perl-DBD-MySQL shell> rpm -Uvh http://mysql-master-ha.googlecode.com/files/mha4mysql-node-0.52-0.noarch.rpm
安裝Manager:shell
shell> yum install perl-DBD-MySQL shell> yum install perl-Config-Tiny shell> yum install perl-Log-Dispatch shell> yum install perl-Parallel-ForkManager shell> rpm -Uvh http://mysql-master-ha.googlecode.com/files/mha4mysql-node-0.52-0.noarch.rpm shell> rpm -Uvh http://mysql-master-ha.googlecode.com/files/mha4mysql-manager-0.52-0.noarch.rpm
配置全局設置:ubuntu
shell> cat /etc/masterha_default.cnf [server default] user=... password=... ssh_user=...
配置應用設置:服務器
shell> cat /etc/masterha_application.cnf [server_1] hostname=... [server_2] hostname=...
檢查MySQL複製:app
shell> masterha_check_repl --conf=/etc/masterha_application.cnf
檢查SSH公鑰免密碼登陸:ssh
shell> masterha_check_ssh --conf=/etc/masterha_application.cnf
首先啓動MHA進程:google
shell> masterha_manager --conf=/etc/masterha_application.cnf
而後檢查MHA狀態:spa
shell> masterha_check_status --conf=/etc/masterha_application.cnf
注:若是正常,會顯示『PING_OK』,不然會顯示『NOT_RUNNING』。
到此爲止,一個基本的MHA例子就能正常運轉了,不過一旦當前的MySQL主服務器發生故障,MHA把某臺MySQL從服務器提高爲新的MySQL主服務器後,如何通知應用呢?這就須要在配置文件里加上以下兩個參數:
說到Failover,一般有兩種方式:一種是虛擬IP地址,一種是全局配置文件。