常見的高可用MySQL解決方案

MySQL數據庫做爲最基礎的數據存儲服務之一,在整個系統中有着很是重要的地位,所以要求其具有高可用性是無可厚非的。有不少解決方案能實現不一樣的SLA(服務水平協定),這些方案能夠保證數據庫服務器在硬件或軟件出現故障時服務繼續可用。java


高性能性須要解決的主要有兩個問題,即如何實現數據共享或同步數據,另外一個是如何處理failover,數據共享通常的解決方案是經過SAN(Storage Area Network)來實現,而數據同步能夠經過rsync軟件或DRBD技術來實現;failover的意思就是當服務器死機或出現錯誤時能夠自動切換到其餘備用的服務器,不影響服務器上業務系統的運行。本文重點介紹一下目前比較成熟的Mysql高性能解決方案。spring


一、主從複製解決方案sql


這是MySQL自身提供的一種高可用解決方案,數據同步方法採用的是MySQL replication技術。MySQL replication就是一個日誌的複製過程,在複製過程當中一個服務器充當主服務器,而一個或多個其餘服務器充當從服務器,簡單說就是從服務器到主服務器拉取二進制日誌文件,而後再將日誌文件解析成相應的SQL在從服務器上從新執行一遍主服務器的操做,經過這種方式保證數據的一致性。數據庫

MySQL replication技術僅僅提供了日誌的同步執行功能,而從服務器只能提供讀操做,而且當主服務器故障時,必須經過手動來處理failover,一般的作法是將一臺從服務器更改成主服務器。這種解決方案在必定程度上實現了MySQL的高可用性,能夠實現90.000%的SLA。服務器

爲了達到更高的可用性,在實際的應用環境中,通常都是採用MySQL replication技術配合高可用集羣軟件來實現自動failover,這種方式能夠實現95.000%的SLA。8.2節會重點介紹經過KeepAlived結合MySQL replication技術實現MySQL高可用構架的解決方案。網絡


二、MMM高可用解決方案mybatis


MMM是Master-Master Replication Manager for MySQL的縮寫,全稱爲MySQL主主複製管理器,它提供了MySQL主主複製配置的監控、故障轉移和管理的一套可伸縮的腳本套件。在MMM高可用方案中,典型的應用是雙主多從架構,經過MySQL replication技術能夠實現兩個服務器互爲主從,且在任什麼時候候只有一個節點能夠被寫入,避免了多點寫入的數據衝突。同時,當可寫的主節點故障時,MMM套件能夠馬上監控到,而後將服務自動切換到另外一個主節點,繼續提供服務,從而實現MySQL的高可用。架構

MMM方案是目前比較成熟的MySQL高可用解決方案,能夠實現99.000%的SLA。8.3節會重點介紹經過MMM實現MySQL高可用解決方案。mvc


三、Heartbeat/SAN高可用解決方案框架


此方案是藉助於第三方的軟硬件實現的,在這個方案中,處理failover的方式是高可用集羣軟件Heartbeat,它監控和管理各個節點間鏈接的網絡,並監控集羣服務,當節點出現故障或者服務不可用時,自動在其餘節點啓動集羣服務。

在數據共享方面,經過SAN(Storage Area Network)存儲來共享數據,在正常狀態下,集羣主節點將掛載存儲進行數據讀寫,而當集羣發生故障時,Heartbeat會首先經過一個仲裁設備將主節點掛載的存儲設備釋放,而後在備用節點上掛載存儲,接着啓動服務,經過這種方式實現數據的共享和同步。這種數據共享方式實現簡單,可是成本較高,而且存在腦裂的可能,須要根據實際應用環境來選擇。這種方案能夠實現99.990%的SLA。


四、Heartbeat/DRBD高可用解決方案


這種高可用解決方案也是藉助於第三方的軟硬件實現的,在處理failover的方式上依舊採用Heartbeat,不一樣的是,在數據共享方面,採用了基於塊級別的數據同步軟件DRBD來實現。

DRBD即Distributed Replicated Block Device,是一個用軟件實現的、無共享的、服務器之間鏡像塊設備內容的存儲複製解決方案。和SAN網絡不一樣,它並不共享存儲,而是經過服務器之間的網絡複製數據。這種方案實現起來稍微複雜,同時也存在腦裂的問題,能夠實現99.900%的SLA。下載地址 java後臺框架源碼 springmvc mybatis


五、MySQL Cluster高可用解決方案


MySQL Cluster由一組服務節點構成,每一個服務節點上均運行着多種進程,包括MySQL服務器、NDB Cluster的數據節點、管理服務器,以及(可能)專門的數據訪問程序。此解決方案是MySQL官方主推的技術方案,功能強大,可是因爲實現較爲繁瑣,配置麻煩,實際的企業應用並很少。MySQL Cluster的標準版和電信版能夠達到99.999%的SLA。

相關文章
相關標籤/搜索