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