Oracle發(fā)布《面向大規(guī)?缮炜s網(wǎng)站基礎(chǔ)設(shè)施的MySQL參考架構(gòu)》白皮書(shū),針對(duì)將MySQL用作數(shù)據(jù)存儲(chǔ)的不同類型和不同規(guī)模的網(wǎng)站給出了推薦的拓?fù)浣Y(jié)構(gòu)。
根據(jù)分別提供4類服務(wù)——用戶和會(huì)話管理、電子商務(wù)、分析類應(yīng)用 (多結(jié)構(gòu)數(shù)據(jù))和CMS(元數(shù)據(jù))——的網(wǎng)站的規(guī)模和可用性要求(如下表所示),這份白皮書(shū)給出了4個(gè)參考架構(gòu)。
請(qǐng)注意,這里給出的指導(dǎo)方針只是基本建議,實(shí)際應(yīng)用中需要根據(jù)讀寫模式、負(fù)載平衡和所用的緩存機(jī)制等因素進(jìn)行調(diào)整。
小型(Small)網(wǎng)站參考架構(gòu)
這一參考架構(gòu)可用于上述4類網(wǎng)站的所有小型實(shí)現(xiàn)?梢允褂肕ySQL Replication來(lái)制作數(shù)據(jù)的副本以支持備份和分析。
中型(Medium)網(wǎng)站參考架構(gòu)
在這種情況下,推薦針對(duì)不同類型的活動(dòng)選擇獨(dú)立的基礎(chǔ)設(shè)施,考慮每個(gè)MySQL服務(wù)器最多支持8個(gè)應(yīng)用服務(wù)器,如果因伸縮性需求應(yīng)用服務(wù)器數(shù)量增加,則添加更多的MySQL從服務(wù)器。
為滿足會(huì)話管理網(wǎng)站和電子商務(wù)網(wǎng)站的高可用性要求,可以使用Linux心跳(Heartbeat)和半同步復(fù)制。CMS網(wǎng)站通常對(duì)讀操作的向外擴(kuò)展有更高要求,假定每個(gè)MySQL從服務(wù)器最多可以處理3000個(gè)并發(fā)用戶,白皮書(shū)建議為每個(gè)MySQL主服務(wù)器添加20-30個(gè)從服務(wù)器。CMS系統(tǒng)可將數(shù)據(jù)保存在一個(gè)SAN中,或者保存在連接到該服務(wù)器的分布式設(shè)備中。
會(huì)話管理網(wǎng)站和CMS網(wǎng)站推薦使用Memcached,這有助于減輕應(yīng)用服務(wù)器和MySQL服務(wù)器的負(fù)擔(dān)。
分析類網(wǎng)站的拓?fù)浣Y(jié)構(gòu)簡(jiǎn)單一些,1個(gè)主服務(wù)器加3個(gè)從服務(wù)器就能解決問(wèn)題。
大規(guī)模(Large)網(wǎng)站參考架構(gòu)
針對(duì)大規(guī)模網(wǎng)站,白皮書(shū)推薦使用MySQL Geographic Replication來(lái)進(jìn)行跨數(shù)據(jù)中心的數(shù)據(jù)庫(kù)復(fù)制,這種方式支持跨越地理上分離的集群進(jìn)行異步復(fù)制。
會(huì)話管理網(wǎng)站和電子商務(wù)網(wǎng)站應(yīng)該使用集群,白皮書(shū)聲稱“4個(gè)數(shù)據(jù)節(jié)點(diǎn),1秒可以支持6000個(gè)會(huì)話(頁(yè)面點(diǎn)擊),其中每次頁(yè)面點(diǎn)擊生成8–12個(gè)數(shù)據(jù)庫(kù)操作”。大規(guī)模CMS網(wǎng)站使用的配置與中型網(wǎng)站類似,只是必要時(shí)需要多添加一些從服務(wù)器。針對(duì)分析類應(yīng)用,這里引入了一個(gè)數(shù)據(jù)提煉(Data Refinery)單元,用于數(shù)據(jù)的清理和組織。
超大規(guī)模(Extra Large)網(wǎng)站參考架構(gòu)
針對(duì)社交網(wǎng)站,白皮書(shū)也給出了相應(yīng)建議。它聲稱“網(wǎng)絡(luò)上流量最大的10個(gè)網(wǎng)站有9個(gè)部署了MySQL,其中包括Google、Facebook和YouTube”,但是沒(méi)有說(shuō)明這些網(wǎng)站用MySQL干什么,不過(guò)眾所周知的是,LinkedIn成功應(yīng)用了MySQL。
社交網(wǎng)站的拓?fù)浣Y(jié)構(gòu)利用了中型和大規(guī)模網(wǎng)站中實(shí)現(xiàn)的概念,包括專用應(yīng)用服務(wù)器、Memcached和數(shù)據(jù)提煉單元, 但為支持寫操作的向外擴(kuò)展引入了分片(Shard)。MySQL集群被用于用戶的認(rèn)證和查找,當(dāng)“用于查找的鍵(key)不止1個(gè)”時(shí),直接讀寫相應(yīng)的分片。
MySQL主服務(wù)器和從服務(wù)器的推薦規(guī)格如下:
- 8–16個(gè)x86-64位CPU核心(MySQL 5.5及以上)。
- 4–8個(gè)x86 -64位CPU核心(MySQL 5.1及更早版本)。
- 比活動(dòng)數(shù)據(jù)多3–10倍的內(nèi)存。
- Linux、Solaris或Windows操作系統(tǒng)。
- 最少4塊磁盤,8–16塊磁盤能增加I/O密集型應(yīng)用的性能。
- 支持電池供電高速緩存的硬件RAID。
- 推薦使用RAID 10。如果負(fù)載為讀密集型,RAID 5也是合適的。
- 2個(gè)網(wǎng)卡和2個(gè)供電單元用作冗余。
另外,白皮書(shū)還有一些針對(duì)MySQL集群和數(shù)據(jù)存儲(chǔ)設(shè)備的建議,再就是用于監(jiān)控、備份和集群管理的解決方案。
查看英文原文:MySQL Reference Architectures for Small to Extra Large Websites