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