聲明: 本篇文章內(nèi)容整理來源于互聯(lián)網(wǎng)以及本人自己的梳理總結(jié),目的是從零到一的搭建起來mysql mha高可用架構(gòu)。
一、軟件概述
MHA(Master High Availability)目前在MySQL高可用方面是一個相對成熟的解決方案,它由日本DeNA公司youshimaton(現(xiàn)就職于Facebook公司)開發(fā),是一套優(yōu)秀的作為MySQL高可用性環(huán)境下故障切換和主從提升的高可用軟件。在MySQL故障切換過程中,MHA能做到在0~30秒之內(nèi)自動完成數(shù)據(jù)庫的故障切換操作,并且在進行故障切換的過程中,MHA能在最大程度上保證數(shù)據(jù)的一致性,以達到真正意義上的高可用。
該軟件由兩部分組成:MHA Manager(管理節(jié)點)和MHA Node(數(shù)據(jù)節(jié)點)。MHA Manager可以單獨部署在一臺獨立的機器上管理多個master-slave集群,也可以部署在一臺slave節(jié)點上。MHA Node運行在每臺MySQL服務(wù)器上,MHA Manager會定時探測集群中的master節(jié)點,當(dāng)master出現(xiàn)故障時,它可以自動將最新數(shù)據(jù)的slave提升為新的master,然后將所有其他的slave重新指向新的master。整個故障轉(zhuǎn)移過程對應(yīng)用程序完全透明。
在MHA自動故障切換過程中,MHA試圖從宕機的主服務(wù)器上保存二進制日志,最大程度的保證數(shù)據(jù)的不丟失,但這并不總是可行的。例如,如果主服務(wù)器硬件故障或無法通過ssh訪問,MHA沒法保存二進制日志,只進行故障轉(zhuǎn)移而丟失了最新的數(shù)據(jù)。使用MySQL 5.5的半同步復(fù)制,可以大大降低數(shù)據(jù)丟失的風(fēng)險。MHA可以與半同步復(fù)制結(jié)合起來。如果只有一個slave已經(jīng)收到了最新的二進制日志,MHA可以將最新的二進制日志應(yīng)用于其他所有的slave服務(wù)器上,因此可以保證所有節(jié)點的數(shù)據(jù)一致性。
目前MHA主要支持一主多從的架構(gòu),要搭建MHA,要求一個復(fù)制集群中必須最少有三臺數(shù)據(jù)庫服務(wù)器,一主二從,即一臺充當(dāng)master,一臺充當(dāng)備用master,另外一臺充當(dāng)從庫,因此至少需要三臺服務(wù)器。
二、環(huán)境說明
2.1 系統(tǒng)環(huán)境
系統(tǒng)版本 | CentOS release 6.5 (Final) |
內(nèi)核版本 | 2.6.32-431.el6.x86_64 |