Oracle發布《面向大規模可伸縮網站基礎設施的MySQL參考架構》白皮書,針對將MySQL用作數據存儲的不同類型和不同規模的網站給出了推薦的拓撲結構。
根據分別提供4類服務——用戶和會話管理、電子商務、分析類應用 (多結構數據)和CMS(元數據)——的網站的規模和可用性要求(如下表所示),這份白皮書給出了4個參考架構。
請注意,這裡給出的指導方針只是基本建議,實際應用中需要根據讀寫模式、負載平衡和所用的緩存機制等因素進行調整。
小型(Small)網站參考架構
這一參考架構可用於上述4類網站的所有小型實現。可以使用MySQL Replication來制作數據的副本以支持備份和分析。
中型(Medium)網站參考架構
在這種情況下,推薦針對不同類型的活動選擇獨立的基礎設施,考慮每個MySQL服務器最多支持8個應用服務器,如果因伸縮性需求應用服務器數量增加,則添加更多的MySQL從服務器。
為滿足會話管理網站和電子商務網站的高可用性要求,可以使用Linux心跳(Heartbeat)和半同步復制。CMS網站通常對讀操作的向外擴展有更高要求,假定每個MySQL從服務器最多可以處理3000個並發用戶,白皮書建議為每個MySQL主服務器添加20-30個從服務器。CMS系統可將數據保存在一個SAN中,或者保存在連接到該服務器的分布式設備中。
會話管理網站和CMS網站推薦使用Memcached,這有助於減輕應用服務器和MySQL服務器的負擔。
分析類網站的拓撲結構簡單一些,1個主服務器加3個從服務器就能解決問題。
大規模(Large)網站參考架構
針對大規模網站,白皮書推薦使用MySQL Geographic Replication來進行跨數據中心的數據庫復制,這種方式支持跨越地理上分離的集群進行異步復制。
會話管理網站和電子商務網站應該使用集群,白皮書聲稱“4個數據節點,1秒可以支持6000個會話(頁面點擊),其中每次頁面點擊生成8–12個數據庫操作”。大規模CMS網站使用的配置與中型網站類似,只是必要時需要多添加一些從服務器。針對分析類應用,這裡引入了一個數據提煉(Data Refinery)單元,用於數據的清理和組織。
超大規模(Extra Large)網站參考架構
針對社交網站,白皮書也給出了相應建議。它聲稱“網絡上流量最大的10個網站有9個部署了MySQL,其中包括Google、Facebook和YouTube”,但是沒有說明這些網站用MySQL干什麼,不過眾所周知的是,LinkedIn成功應用了MySQL。
社交網站的拓撲結構利用了中型和大規模網站中實現的概念,包括專用應用服務器、Memcached和數據提煉單元, 但為支持寫操作的向外擴展引入了分片(Shard)。MySQL集群被用於用戶的認證和查找,當“用於查找的鍵(key)不止1個”時,直接讀寫相應的分片。
MySQL主服務器和從服務器的推薦規格如下:
另外,白皮書還有一些針對MySQL集群和數據存儲設備的建議,再就是用於監控、備份和集群管理的解決方案。
查看英文原文:MySQL Reference Architectures for Small to Extra Large Websites