天天看點

MySQL MMM與MHA的差別簡介MMM(Multi-Master Replicatin Manager)MHA(Master High Availability)

文章目錄

  • 簡介
  • MMM(Multi-Master Replicatin Manager)
      • MMM提供了什麼功能?
  • MHA(Master High Availability)
      • MHA工具的優點
      • MHA工具的缺點

簡介

解決mysql主伺服器單點故障的方法一般常用的有兩個mmm和mha,但是一般從真正的高可用的場合,其實最常用的是mha。

如何避免mysql單點故障?

利用mysql主從複制來解決mysql單點故障

如何解決主伺服器的單點問題?

主伺服器切換後,如何通知應用新的主伺服器的ip位址

如何檢查mysql主伺服器是否可用?

如何處理從伺服器和新主伺服器之間的那種複制關系?

MMM(Multi-Master Replicatin Manager)

解決這些問題使用第三方管理元件一種是mmm (Multi-Master Replicatin Manager),它是perl語言開發的一套用于管理mysql主主同步架構的一種工具集,主要作用是,監控和管理mysql的主主複制拓撲,并在目前的主伺服器失效時,進行主和主備伺服器之間的主從切換和故障轉移工作。

MMM提供了自動和手動兩種方式移除一組伺服器中複制延遲較高的伺服器的虛拟ip,同時它還可以備份資料,實作兩節點之間的資料同步等。由于MMM無法完全的保證資料一緻性,是以MMM适用于對資料的一緻性要求不是很高,但是又想最大程度的保證業務可用性的場景。對于那些對資料的一緻性要求很高的業務,非常不建議采用MMM這種高可用架構。

MMM提供了什麼功能?

MMM監控mysql主從複制健康情況

在主庫出現當機時進行故障轉移并自動配置其它從對新主的複制

MMM部署步驟

1、配置主主複制及主從同步叢集

2、安裝主從節點所需要的支援包

3、安裝及配置MMM工具集

4、運作MMM監控服務

5、測試

MHA(Master High Availability)

MHA(Master High Availability)目前在MySQL高可用方面是一個相對成熟的解決方案,它由日本DeNA公司youshimaton(現就職于Facebook公司)開發,是一套優秀的作為MySQL高可用性環境下故障切換和主從提升的高可用軟體。在MySQL故障切換過程中,MHA能做到在0~30秒之内自動完成資料庫的故障切換操作,并且在進行故障切換的過程中,MHA能在最大程度上保證資料的一緻性,以達到真正意義上的高可用。

該軟體由兩部分組成:MHA Manager(管理節點)和MHA Node(資料節點)。MHA Manager可以單獨部署在一台獨立的機器上管理多個master-slave叢集,也可以部署在一台slave節點上。MHA Node運作在每台MySQL伺服器上,MHA Manager會定時探測叢集中的master節點,當master出現故障時,它可以自動将最新資料的slave提升為新的master,然後将所有其他的slave重新指向新的master。整個故障轉移過程對應用程式完全透明。

在MHA自動故障切換過程中,MHA試圖從當機的主伺服器上儲存二進制日志,最大程度的保證資料的不丢失,但這并不總是可行的。例如,如果主伺服器硬體故障或無法通過ssh通路,MHA沒法儲存二進制日志,隻進行故障轉移而丢失了最新的資料。使用MySQL 5.5的半同步複制,可以大大降低資料丢失的風險。MHA可以與半同步複制結合起來。如果隻有一個slave已經收到了最新的二進制日志,MHA可以将最新的二進制日志應用于其他所有的slave伺服器上,是以可以保證所有節點的資料一緻性。

目前MHA主要支援一主多從的架構,要搭建MHA,要求一個複制叢集中必須最少有三台資料庫伺服器,一主二從,即一台充當master,一台充當備用master,另外一台充當從庫,因為至少需要三台伺服器,出于機器成本的考慮,淘寶也在該基礎上進行了改造,目前淘寶TMHA已經支援一主一從。另外對于想快速搭建的可以參考:MHA快速搭建

MHA工具的優點

同樣是由Perl語言開發的開源工具,可以支援基于GTID的複制模式,MHA在進行故障轉移時更不易産生資料丢失,同一個監控節點可以監控多個叢集,

MHA工具的缺點

需要編寫腳本或利用第三方工具來實作vip的配置,MHA啟動後隻會對資料庫進行監控,需要基于ssh免認證配置,存在一定的安全隐患,沒有提供從伺服器的讀負載均很的功能。