MHA介紹
? MHA(Master High Avalilability)MySQL高可用性環(huán)境下故障切換和主從提升的高可用軟件.在MySQL故障切換過(guò)程中硕蛹,MHA能做到在10~30秒之內(nèi)自動(dòng)完成數(shù)據(jù)庫(kù)的故障切換操作漓藕,并且在進(jìn)行故障切換的過(guò)程中雏搂,MHA能在最大程度上保證數(shù)據(jù)的一致性俱萍,以達(dá)到真正意義上的高可用。
? MHA還提供在線主庫(kù)切換的功能羽嫡,能夠安全地切換當(dāng)前運(yùn)行的主庫(kù)到一個(gè)新的主庫(kù)中(將主庫(kù)提供為主庫(kù))叹俏,大概0.5-2s內(nèi)完成。
? MHA由兩部分組成:嚷往,MHA Manager可以單獨(dú)部署在一臺(tái)獨(dú)立的機(jī)器上管理多個(gè)master-slave集群葛账,也可以部署在一臺(tái)slave節(jié)點(diǎn)上。MHA Node運(yùn)行在每臺(tái)MySQL服務(wù)器上皮仁,MHA Manager會(huì)定時(shí)探測(cè)集群中的master節(jié)點(diǎn)籍琳,當(dāng)master出現(xiàn)故障時(shí)菲宴,它可以自動(dòng)將最新數(shù)據(jù)的slave提升為新的master,然后將所有其他的slave重新指向新的master趋急。整個(gè)故障轉(zhuǎn)移過(guò)程對(duì)應(yīng)用程序完全透明喝峦。
MHA 優(yōu)點(diǎn)
- 自動(dòng)故障轉(zhuǎn)移快
- 主庫(kù)崩潰不存在數(shù)據(jù)一致性問(wèn)題
- 不需要對(duì)當(dāng)前mysql環(huán)境做重大修改
- 不需要添加額外的服務(wù)器(僅一臺(tái)manager就可管理上百個(gè)replication)
- 性能優(yōu)秀,可工作在半同步半復(fù)制和異步復(fù)制呜达,當(dāng)監(jiān)控mysql狀態(tài)時(shí)谣蠢,僅需要每隔N秒向master發(fā)送ping包(默認(rèn)3秒),所以對(duì)性能無(wú)影響查近。你可以理解為MHA的性能和簡(jiǎn)單的主從復(fù)制框架性能一樣漩怎。
- 支持所有的存儲(chǔ)引擎
MHA工程流程
- 把宕機(jī)的master二進(jìn)制日志保存下來(lái)
- 找到binlog位置點(diǎn)最新的slave
- 在binlog位置點(diǎn)最新的slave上用relay log修復(fù)其它slave
- 將宕機(jī)的master上保存下來(lái)的二進(jìn)制日志恢復(fù)到含有最新位置點(diǎn)的slave上
- 將含有最新位置點(diǎn)binlog所在的slave提升為master
- 將其它slave重新指向新提升的master,并開啟主從復(fù)制嗦嗡。(重構(gòu)主從)
MHA 架構(gòu)
工具
- manager工具
(1)masterha_check_ssh #檢查MHA的SSH配置狀況;
(2)masterha_check_repl #檢查MySQL復(fù)制狀況;
(3)masterha_manger #啟動(dòng)MHA;
(4)masterha_check_status #檢測(cè)當(dāng)前MHA運(yùn)行狀態(tài);
(5)masterha_master_monitor #檢測(cè)master是否宕機(jī);
(6)masterha_master_switch #控制故障轉(zhuǎn)移(自動(dòng)或者手動(dòng));
(7)masterha_conf_host #添加或刪除配置的server信息
- node 工具勋锤,這些工具通常有MHA Manager的腳本觸發(fā),無(wú)需認(rèn)為操作侥祭。
(1)save_binary_logs #保存和復(fù)制master的二進(jìn)制日志;
(2)apply_diff_relay_logs #識(shí)別差異的中繼日志事件并將其差異的事件應(yīng)用于其他的slave;
(3)purge_relay_logs #清除中繼日志(不會(huì)阻塞SQL線程);