首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 高可用架構方案總結:從共享存儲到分散式叢集

     編輯:MySQL 資料庫相關知識

前言

高可用(HA)是互聯網服務標配。衡量標準:3 個 9(年停機 ≤8h)、5 個 9(年停機 ≤5min)。資料庫 HA 需同時兼顧服務可用性與資料一致性。本文系統整理 MySQL 主流 HA 方案,分析優缺點與適用場景。

一、共享存儲方案(SAN)

架構:主備伺服器掛載同一 SAN 存儲,主機故障時備機掛載同一文件系統接管。

優點缺點
避免存儲外組件導致資料遺失
部署/切換簡單,對應用透明
主備強一致
SAN 單點故障風險
成本高昂

二、磁碟複寫方案(DRBD)

架構:Linux 核心模組,區塊級同步複寫,主機寫入同步至備機區塊裝置。

優點缺點
切換透明
強一致
寫入效能受影響(同步網路延遲)
通常雙節點,擴展性差
備庫不可讀,資源浪費

三、主從複寫為基礎的方案(單點寫)

3.1 Keepalived / Heartbeat

架構:VIP 漂移,Keepalived 監聽主庫健康狀態,故障時提升從庫為主。

優點缺點
安裝簡單
故障快速切換,應用透明
主備需同網段
檢測機制弱,需自訂腳本(如心跳表)
異步複寫無法保證強一致,可開啟半同步緩解
Keepalived 自身 HA 無保障

3.2 MHA (Master High Availability)

架構:Manager 節點 + Data 節點,故障時從故障主庫保存 binlog 回補,最大程度減少資料遺失。

優點缺點
開源可二次開發
修復多從庫差異,選最新數據節點為新主
支援 VIP 或全域目錄庫切換
無法保證強一致(主庫磁碟損壞/SSH 失效時 binlog 不可取)
僅支援一主多從,至少三節點
全域目錄庫切換對應用不透明
大規模叢集部署複雜
Manager 自身 HA 無保障

3.3 基於 ZooKeeper 的高可用

架構:每個 MySQL 節點部署 HA Client 向 ZooKeeper 上報心跳,HA 節點監聽 ZooKeeper 事件,透過分散式鎖保證單一切換動作。

優點缺點
整體系統高可用(含 HA 自身)
強一致依賴 MySQL 半同步或 MHA 回補
擴展性極佳,支援大規模叢集
引入 ZooKeeper 系統複雜度大幅提升

四、多點寫叢集方案

4.1 PXC (Percona XtraDB Cluster / Galera)

優點缺點
準同步複寫
多節點可讀寫,寫擴展
自動節點管理
資料嚴格一致
服務高可用
僅支援 InnoDB
所有表必須有主鍵
寫入放大(同步至所有節點)
高度依賴網路穩定,不適合跨機房遠距離同步

4.2 NDB Cluster

基於 NDB 引擎,限制較多,生產較少採用。

五、中間件 Proxy 方案

代表:MySQL Fabric、阿里 Cobar/TDDL、MySQL Proxy。

優點缺點
切換對應用透明
擴展性強,便於分片
支援跨機房部署切換
較新組件,生產案例少
未解決強一致,依賴 MySQL 半同步與回補機制

總結

主從複寫方案最成熟主流;引入中間件/ZooKeeper 可提升可用性與規模,但對研發運維要求更高。選型需依業務場景與運維能力抉擇。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved