MySQL 8 大叢集架構的優缺點總結

業餘草發表於2019-03-14

點選上方“業餘草”,選擇“置頂公眾號”

第一時間獲取技術乾貨和業界資訊!


640?wx_fmt=png

640?wx_fmt=png

很多開發者可能都沒有接觸過 MySQL 的架構部署,但是大多數應該都聽過叢集架構吧。其實 MySQL 叢集架構,總結來說一共有好多種,今天我主要總結一下其中常用的 8 種叢集架構。

主從架構

主從架構一般說的是,讀寫分離這種。他的好處是,資料可以有備份。並且,在一定程度上緩解了讀和寫的效率。從而提高資料庫系統的可用性。

主主互備 + keepalived

主從架構有一個特點就是,如果有一個故障,那麼高可用就無法談起。所以,有的公司便採用這種主主互備的架構來解決突發的單點故障帶來的影響。這種架構的特點是,MySQL 雙主複製,即互為 Master-Slave (只有一個 Master 提供寫操作),可以實現資料庫伺服器的熱備,但是一個 Master 當機後不能實現動態切換。使用 Keepalived,可以通過虛擬 IP,實現雙主對外的統一介面以及自動檢查、失敗切換機制,從而實現 MySQL 資料庫的高可用方案。

主主互備,分別主+從

這種架構比上面的主主互備 + keepalived 模式,效能更好一些。讀寫分離等都是可以實現的。

主主互備,從加在一個主上

對比上面的一種架構,每個主庫上都加一個從庫,太浪費了,包括 IO 等都有不小的影響。如果把從庫都掛到一個主庫上,那麼效率就會更高一些。

MMM 架構

MMM(Master-Master replication manager for MySQL)是一套支援雙主故障切換和雙主日常管理的指令碼程式。MMM 使用 Perl 語言開發,基於 mysql 主從複製,成熟高可用叢集方案,由一個管理端(monitor)和多個代理端(aget)構成。

640

這種架構優點:監控所有 Master 節點及 Slave 節點狀態,當 master 節點出現故障,會把 vip 自動轉移到健康節點上;更重要的是當 Master 節點發生故障,會自動將後端 Slave 節點轉向備用的 Master 節點繼續同步複製,切換過程不需要人工干預;

缺點:對 ip,伺服器數量有要求(至少兩臺伺服器,2個真實 ip,3 個 vip);業務繁忙,資料量大的時候不是很穩定,會出現複製延時,切換失效等問題;所以 MMM 方案不適合應用於對資料安全性要求很高,並讀寫頻繁的環境中。資料量大的時候,會有主從資料不同步的問題。

MHA 架構

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

640

這種架構搭建起來比較麻煩,至少三臺機器,淘寶進行過二次開發,可以用兩臺機器。

mysqlproxy

MySQL Proxy 有一項強大功能是實現“讀寫分離”,基本原理是讓主資料庫處理寫方面事務,讓從庫處理 SELECT 查詢。

640

通過 lua 指令碼實現的讀寫分離,官網不建議用。由於加入了一層 proxy 會導致網路請求的增加消耗,所以效能造成一定的影響。

Amoeba

Amoeba for MySQL是一款優秀的中介軟體軟體,同樣可以實現讀寫分離,負載均衡等功能,並且穩定性也高於 MySQL Proxy。

Amoeba(變形蟲)專案,專注 分散式資料庫 proxy 開發。座落與 Client、DB Server(s) 之間。對客戶端透明。具有負載均衡、高可用性、sql 過濾、讀寫分離、可路由相關的 query 到目標資料庫、可併發請求多臺資料庫合併結果。

它的特點:降低資料切分帶來的複雜多資料庫結構;提供切分規則並降低,資料切分規則,給應用帶來的影響;降低 db 與客戶端的連線數;讀寫分離。

640

Amoeba 致力於 mysql 分散式資料庫前端代理層,它主要在應用層,訪問 mysql 的時候充當 SQL 路由器的功能,依據使用者事先設定的規則,將 SQL 請求傳送到特定的資料庫上執行。基於此可以實現負載均衡、讀寫分離、高可用性等需求。Amoeba 相當於一個 SQL 請求的路由器,目的是為負載均衡、讀寫分離、高可用性提供機制,而不是完全實現它們。

針對以上 8 種架構,你們公司正在使用的是哪一種?請留言評論,謝謝轉發!

640?wx_fmt=png

10T技術資源大放送!包括但不限於:C/C++,Linux,Python,Java,PHP,人工智慧,GO等等。在公眾號內回覆對應關鍵字或框架名字,即可免費獲取!!

640?wx_fmt=png

 你再主動一點點 640?  我們就有故事了

相關文章