MySQL 8 大叢集架構的優缺點總結
點選上方“業餘草”,選擇“置頂公眾號”
第一時間獲取技術乾貨和業界資訊!
很多開發者可能都沒有接觸過 MySQL 的架構部署,但是大多數應該都聽過叢集架構吧。其實 MySQL 叢集架構,總結來說一共有好多種,今天我主要總結一下其中常用的 8 種叢集架構。
主從架構
主從架構一般說的是,讀寫分離這種。他的好處是,資料可以有備份。並且,在一定程度上緩解了讀和寫的效率。從而提高資料庫系統的可用性。
主從架構有一個特點就是,如果有一個故障,那麼高可用就無法談起。所以,有的公司便採用這種主主互備的架構來解決突發的單點故障帶來的影響。這種架構的特點是,MySQL 雙主複製,即互為 Master-Slave (只有一個 Master 提供寫操作),可以實現資料庫伺服器的熱備,但是一個 Master 當機後不能實現動態切換。使用 Keepalived,可以通過虛擬 IP,實現雙主對外的統一介面以及自動檢查、失敗切換機制,從而實現 MySQL 資料庫的高可用方案。
這種架構比上面的主主互備 + keepalived 模式,效能更好一些。讀寫分離等都是可以實現的。
對比上面的一種架構,每個主庫上都加一個從庫,太浪費了,包括 IO 等都有不小的影響。如果把從庫都掛到一個主庫上,那麼效率就會更高一些。
MMM(Master-Master replication manager for MySQL)是一套支援雙主故障切換和雙主日常管理的指令碼程式。MMM 使用 Perl 語言開發,基於 mysql 主從複製,成熟高可用叢集方案,由一個管理端(monitor)和多個代理端(aget)構成。
這種架構優點:監控所有 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 能在最大程度上保證資料的一致性,以達到真正意義上的高可用。
這種架構搭建起來比較麻煩,至少三臺機器,淘寶進行過二次開發,可以用兩臺機器。
mysqlproxy
MySQL Proxy 有一項強大功能是實現“讀寫分離”,基本原理是讓主資料庫處理寫方面事務,讓從庫處理 SELECT 查詢。
通過 lua 指令碼實現的讀寫分離,官網不建議用。由於加入了一層 proxy 會導致網路請求的增加消耗,所以效能造成一定的影響。
Amoeba
Amoeba for MySQL是一款優秀的中介軟體軟體,同樣可以實現讀寫分離,負載均衡等功能,並且穩定性也高於 MySQL Proxy。
Amoeba(變形蟲)專案,專注 分散式資料庫 proxy 開發。座落與 Client、DB Server(s) 之間。對客戶端透明。具有負載均衡、高可用性、sql 過濾、讀寫分離、可路由相關的 query 到目標資料庫、可併發請求多臺資料庫合併結果。
它的特點:降低資料切分帶來的複雜多資料庫結構;提供切分規則並降低,資料切分規則,給應用帶來的影響;降低 db 與客戶端的連線數;讀寫分離。
Amoeba 致力於 mysql 分散式資料庫前端代理層,它主要在應用層,訪問 mysql 的時候充當 SQL 路由器的功能,依據使用者事先設定的規則,將 SQL 請求傳送到特定的資料庫上執行。基於此可以實現負載均衡、讀寫分離、高可用性等需求。Amoeba 相當於一個 SQL 請求的路由器,目的是為負載均衡、讀寫分離、高可用性提供機制,而不是完全實現它們。
針對以上 8 種架構,你們公司正在使用的是哪一種?請留言評論,謝謝轉發!
10T技術資源大放送!包括但不限於:C/C++,Linux,Python,Java,PHP,人工智慧,GO等等。在公眾號內回覆對應關鍵字或框架名字,即可免費獲取!!
你再主動一點點 我們就有故事了
相關文章
- 四大主流PHP框架的優點和缺點總結PHP框架
- MySQL垂直拆分和水平拆分的優缺點和共同點總結MySql
- MySQL叢集架構:MHA+MySQL-PROXY+LVS實現MySQL叢集架構高可用/高效能MySql架構
- MVP 與 MVVM 優缺點總結MVPMVVM
- Android:四大架構的優缺點,你真的瞭解嗎?Android架構
- MHA工具的優缺點歸納總結
- MySQL索引的優缺點MySql索引
- GAN原理,優缺點、應用總結
- NUMA架構介紹及優缺點分析架構
- python多執行緒的優缺點總結Python執行緒
- 大規模叢集下的Hadoop高併發以及高效能架構原理總結【石杉的架構筆記】Hadoop架構筆記
- 構建MHA實現MySQL高可用叢集架構MySql架構
- pt-osc工具的優缺點歸納總結
- mysql8叢集搭建MySql
- Redis叢集的三種方式詳解(附優缺點及原理區別)Redis
- Apache Kafka – 叢集架構ApacheKafka架構
- Mysql學習筆記---MySQL叢集架構之擴容方案MySql筆記架構
- MySQL MHA工具的優缺點歸納MySql
- 超全Python IDE武器庫大總結,優缺點一目瞭然!PythonIDE
- MySQL架構與業務總結圖MySql架構
- MySQL架構的優化MySql架構優化
- MongoDB中的分散式叢集架構MongoDB分散式架構
- 知識點漏缺總結
- MySQL 叢集知識點整理MySql
- 關於k8s叢集容器日誌收集的總結K8S
- 基於 K8s 容器叢集的容災架構與方案K8S架構
- Redis介紹、使用、資料結構和叢集模式總結Redis資料結構模式
- 大資料基礎架構總結大資料架構
- ARM架構安裝Kubernetes叢集架構
- 大資料的優缺點有哪些?_光點科技大資料
- Docker的優缺點Docker
- 百度架構師是怎樣搭建MySQL分散式叢集架構MySql分散式
- JAVA架構-使用redis叢集輕鬆應對大併發Java架構Redis
- 簡單介紹常見的三種架構設計模式及其優缺點!架構設計模式
- 什麼是分散式系統!以及分散式系統架構的優缺點!分散式架構
- Jtti:mysql主從同步的優點和缺點是什麼JttiMySql主從同步
- 滴滴 Elasticsearch 多叢集架構實踐Elasticsearch架構
- Redis叢集搭建採坑總結Redis