為瞭解決複雜均衡這方面難題,MySql官方推出了MySql Cluster的構架,下面就讓我們從基本情況、成本、優缺點和應用場合等方面對5種MySql 伺服器叢集的可行性方案進行詳細的分析和比較:
1、MySQL Clustering(ndb-cluster stogare)
MySQL公司以儲存引擎方式提供的高可靠性方案,是事務安全的,即時複製資料,可用於需要高可靠性及負載平衡的場合。該方案至少需要三個節點伺服器才能達到較好的效果。
成本:
1) 節點伺服器對RAM的需求很大,與資料庫大小呈線性比例;
2) 最好使用千兆乙太網路絡;
3) 還需要使用Dolphin公司提供的昂貴的SCI卡。
優點:
1) 可用於負載平衡場合;
2) 可用於高可靠性場合;
3) 高伸縮性;
4) 真正的資料庫冗餘;
5) 容易維護。
缺點:
隨著資料庫的變大,對RAM的需求變得更大,因此成本很高;
速度:
幾乎 比典型的單獨伺服器(無千兆乙太網路,無SCI卡,儲存引擎相關的限制少)慢10倍。
應用場合:
冗餘,高可靠性,負載平衡
2、MySQL / GFS-GNBD/ HA (Active/Passive)
GFS是事務安全的檔案系統。同一時刻你可以讓一個MySQL使用共用資料。
成本:
1) 最多n台高效能伺服器的成本,其中一個啟用的,其他作為備份伺服器。
優點:
1) 高可靠性
2) 某種程度的冗餘
3) 按照高可靠性進行伸縮
缺點:
1) 沒有負載平衡
2) 沒有保證的冗餘
3) 無法對寫操作進行伸縮
速度:
1) 單獨伺服器的2倍。對讀操作支援得較好。
應用場合:
1) 需要高可靠性的、讀操作密集型的應用
3、MySQL / DRBD / HA (Active/Passive)
DRBD可以提供這樣的共用硬碟。DRBD可以被設定成事務安全的。 同一時刻你可以讓一個MySQL使用共用資料。
成本:
1) 最多n台高效能伺服器的成本,其中一個啟用的,而其他則作為備份伺服器。
優點:
1) 高可靠性;
2) 一定程度的冗餘;
3) 以高可靠性名義來看是可伸縮的。
缺點:
1) 沒有負載平衡
2) 沒有保證的冗餘
3) 在寫負載方面沒有伸縮性
速度:
1) 在讀寫方面相當於單獨伺服器
應用場合:
1) 需要高可靠性、讀操作密集型的應用
4、MySQL Write Master / Multiple MySQL Read Slaves (Active/Active)
考慮不同的讀、寫DB資料庫連接的情況。可以使用一台主伺服器用於寫操作,而採用n台從伺服器用於讀操作。
成本:
1) 最多1台高效能寫伺服器,n台讀伺服器的成本
優點:
1) 讀操作的高可靠性;
2) 讀操作的負載平衡;
3) 在讀操作負載平衡方面是可伸縮的。
缺點:
1) 無寫操作的高可靠性;
2) 無寫操作的負載平衡;
3) 在寫操作方面無伸縮性;
速度:
1) 同單獨伺服器;在讀操作方面支援得較好
應用場合:
1) 讀操作密集型的、需要高可靠性和負載平衡的應用。
5、Standalone MySQL Servers(Functionally separated) (Active)
多台功能分離的單獨伺服器,沒有高可靠性、負載平衡能力,明顯缺點太多,不予考慮。
總結:
MySQL官方網站推薦的HA方案是結合DRBD (本文中的方案3) 和 Replication (本文中的方案4)。假如再加上Linux Heartbeat還可實現Auto-failover功能,在此種情況下,我們會發現,down機時間會大大減少。
我們還看到,雖然上述方案解決了叢集問題,但對於Mysql伺服器之間的負載平衡還是存在問題的,下面我們就選用官方推薦的方案4,配合梭子魚安全負載平衡機,來實現真正高效可靠的大型應用架構。