MySQL高可用架構對比,MMM與MHA以及MGR

MMM與MHA以及MGR,高可用架構都有如下的共同點:

  • 對主從複製集羣中的Master節點進行監控
  • 自動的對Master進行遷移,通過VIP。
  • 重新配置集羣中的其它slave對新的Master進行同步

一、MMM

需要兩個Master,同一時間只有一個Master對外提供服務,可以說是主備模式。

 

 

需要基礎資源:

 

 

故障轉移步驟:

  • Slave服務器上的操作
  • 完成原主上已經複製的日誌恢復
  • 使用Change Master命令配置新主
  • 主服務器上操作
  • 設置read_only關閉
  • 遷移VIP到新主服務器

優點:

  • 提供了讀寫VIP的配置,試讀寫請求都可以達到高可用
  • 工具包相對比較完善,不需要額外的開發腳本
  • 完成故障轉移之後可以對MySQL集羣進行高可用監控

缺點:

  • 故障簡單粗暴,容易丟失事務,建議採用半同步複製方式,減少失敗的概率
  • 目前MMM社區已經缺少維護,不支持基於GTID的複製

適用場景:

  • 讀寫都需要高可用的
  • 基於日誌點的複製方式

二、MHA

 

 

需要資源:

 

 

MHA採用的是從slave中選出Master,故障轉移:

  • 從服務器:
  • 選舉具有最新更新的slave
  • 嘗試從宕機的master中保存二進制日誌
  • 應用差異的中繼日誌到其它的slave
  • 應用從master保存的二進制日誌
  • 提升選舉的slave爲master
  • 配置其它的slave向新的master同步

優點:

  • MHA除了支持日誌點的複製還支持GTID的方式
  • 同MMM相比,MHA會嘗試從舊的Master中恢復舊的二進制日誌,只是未必每次都能成功。如果希望更少的數據丟失場景,建議使用MHA架構。

缺點:

MHA需要自行開發VIP轉移腳本。

MHA只監控Master的狀態,未監控Slave的狀態

三、MGR

MGR是基於現有的MySQL架構實現的複製插件,可以實現多個主對數據進行修改,使用paxos協議複製,不同於異步複製的多Master複製集羣。

支持多主模式,但官方推薦單主模式:

  • 多主模式下,客戶端可以隨機向MySQL節點寫入數據
  • 單主模式下,MGR集羣會選出primary節點負責寫請求,primary節點與其它節點都可以進行讀請求處理.

 

 

// 查看MGR的組員
select * from performance_schema.replication_group_members;
// 查看MGR的狀態
select * from performance_schema.replication_group_member_stats;
// 查看MGR的一些變量
show variables like 'group%';
// 查看服務器是否只讀
show variables like 'read_only%';

優點:

  • 基本無延遲,延遲比異步的小很多
  • 支持多寫模式,但是目前還不是很成熟
  • 數據的強一致性,可以保證數據事務不丟失

缺點:

  • 僅支持innodb
  • 只能用在GTID模式下,且日誌格式爲row格式

適用的業務場景:

  • 對主從延遲比較敏感
  • 希望對對寫服務提供高可用,又不想安裝第三方軟件
  • 數據強一致的場景

讀寫負載大問題

讀負載大:

  • 增加slave
  • 加中間層(MyCat,ProxySQL,Maxscale)
  • 讀寫分離

關於寫負載大:

  • 分庫分表
  • 增加中間層
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章