Facebook揭密:如何讓MySQL數(shù)據(jù)庫(kù)集群自主運(yùn)行
Facebook運(yùn)行著全球***的MySQL數(shù)據(jù)庫(kù)集群,該集群分布在兩個(gè)大洲上的多個(gè)數(shù)據(jù)中心中數(shù)以千計(jì)的服務(wù)器上。讓人不解的是,F(xiàn)acebook只動(dòng)用了一個(gè)很小的團(tuán)隊(duì)來(lái)管理這個(gè)龐大的MySQL數(shù)據(jù)庫(kù)集群。
近日Facebook的Shlomo Priymak在Facebook博客上發(fā)文揭開(kāi)了這個(gè)秘密。Facebook的秘訣就是Facebook自己開(kāi)發(fā)的MySQL Pool Scanner(MPS),MPS能完成一個(gè)MySQL數(shù)據(jù)庫(kù)管理員(BDA)的幾乎所有運(yùn)營(yíng)維護(hù)工作,使得Facebook的數(shù)據(jù)庫(kù)集群運(yùn)營(yíng)能夠?qū)崿F(xiàn)高度的自動(dòng)化。
據(jù)Priymak介紹,MPS非常復(fù)雜,代碼大部分由Python寫(xiě)成,不但能夠保證集群的可用性,同時(shí)還讓管理員能夠輕松完成很多復(fù)雜任務(wù)(升級(jí)內(nèi)核、調(diào)整分區(qū)大小、升級(jí)控制器固件等),例如只用單條命令就拷貝整個(gè)Facebook數(shù)據(jù)中心的數(shù)據(jù)集。以下是一些常見(jiàn)的能用單條命令操作的數(shù)據(jù)庫(kù)集群維護(hù)工作:
- 將任意數(shù)量的數(shù)據(jù)庫(kù)機(jī)架清空維護(hù),并移出生產(chǎn)環(huán)境。(大多數(shù)操作在24小時(shí)內(nèi)完成)
- 在特定的并發(fā)數(shù)時(shí)刻重新鏡像數(shù)千臺(tái)機(jī)器(例如進(jìn)行內(nèi)核升級(jí))
- 將任意數(shù)量的可用資源分配給新的項(xiàng)目或者測(cè)試任務(wù)。例如一次分配200臺(tái)服務(wù)器用于測(cè)試。
- 為整個(gè)新數(shù)據(jù)中心建立拷貝,例如Facebook的呂勒奧數(shù)據(jù)中心。