這篇文章主要從基本情況、成本、優缺點和應用場合等方面對5種MySQL的可靠性方案進行了詳細的分析和比較,另外,本文對MySQL數據庫的開發和管理有一定的借鑒作用。詳細內容請大家參考下文:
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機時間會大大減少。