天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

Facebook如何實現PB級別數據庫自動化備份

  Facebook的MySQL數據庫,是世界上最龐大的MySQL數據庫之一,在不同地區有數千個數據庫服務器。因此,備份對他們來說是個巨大的挑戰。為了解決這個問題,他們構建了一個高度自動化、非常有效的備份系統,每周移動多個PB的數據。Facebook數據團隊的 Eric Barrett  通過 一篇文章 分享了他們的做法。

  他們沒有采用大量前載(front-loaded)測試,而是強調快速檢測失敗,并且進行快速、自動化糾正。部署幾百個數據庫服務器,只需很少人力干預。使用下面的三個措施,他們做到了有節奏的增長,同時具備支持上十億用戶的靈活性。

  措施1:二進制日志和mysqldump

  第一道防線稱為“措施1”,或“機架”備份(rack backup),簡稱RBU。在每個數據庫機架上,不論其類型為何,都有兩個RBU存儲服務器。以RBU作為數據庫服務器放在同一個機架中,這可以保證最大的帶寬和最小的延遲,它們同時可以作為緩存,在備份的下個措施使用。

  收集二進制日志,是這些服務器的工作之一。二進制日志會不斷以流形式,通過模擬從進程(simulated slave process)輸送到RBU主機中。這樣一來,不需要運行mysqld,RBU就可以接收到同樣的更新作為復制版本。

  在RBU上保存同步的二進制日志很重要:如果一個主數據庫服務器離線,該服務器上的用戶將無法更新狀態或是上傳照片。出現問題后,他們需要保證修復時間越短越好。有可用的二進制日志,就能讓他們在數秒內啟動另一個數據庫作為主數據庫。由于RBU中有秒級的二進制日志,即使某個舊主數據庫完全不可用,也沒有關系,只要利用將記錄下的事務恢復到上一個備份中即可完成立即恢復。

  RBU服務器的第二個工作是執行傳統備份。MySQL備份有兩種方式:二進制和邏輯(mysqldump)。Facebook使用邏輯備份,因為它與版本無關,提供更好的數據完整性,更緊湊,恢復起來更省事。不過,當為某個數據庫構建全新復制時,他們仍然使用二進制拷貝。

  mysqldump的一個主要好處是:磁盤上的數據損壞不會影響到備份中。如果磁盤某個扇區出現問題,或是寫入錯誤,InnoDB頁面校驗和就會出錯。在組合備份流時,MySQL會從內存中讀取正確的內容,或是去磁盤讀取,然后遇到錯誤的校驗和,停止備份(以及數據庫進程)。mysqldump的問題是:污染用來緩存InnoDB塊的LRU緩存。不過,新版本的MySQL中,會將LRU插入操作從掃描時放到緩存結束。

  對在自己權限范圍內的所有數據庫,每個RBU都有一個夜間備份。盡管有著天量級別的數據,Facebook的團隊還是可以在幾個小時內完成對所有數據的備份。

  如果RBU失敗,自動化軟件會將其職責分配給同一集群中其他系統。當它恢復上線后,職責會自動返回到最初的RBU主機。

  Facebook團隊不會過分擔心單個系統的數據保留問題,因為他們有措施2。

  措施2:Hadoop DFS

  在每個備份和二進制日志收集完成后,他們會馬上將其復制到他們的大型定制化Hadoop集群中。這些集群是非常穩定的復制數據集,并有固定的保留時間。因為磁盤大小增長很快,較老的RBU可能不足以保存一到兩天的備份。不過他們會按需要增長Hadoop集群,同時不需要擔心底層硬件情況。Hadoop的分布式特性讓他們有足夠帶寬,完成快速數據恢復。

  不久,他們會把非實時數據分析放到這些Hadoop集群中。這可以降低數據庫中非關鍵讀的次數,讓Facebook網站的響應速度更快。

  措施3:長期存儲

  每周,他們會從Hadoop備份移動到另一個地區的分散存儲中。這些系統是最新而且安全的存儲系統,在他們的日常數據管理工具流程之外。

  監控

  除常用的系統監控外,他們還會捕捉很多特定的統計數據,比如binlog集合延遲、系統容量等等。

  為備份失敗打分,是他們最有價值的工具。因為Facebook的數據庫和同時運行的維護任務量級,錯過某些備份也不奇怪。廣泛的失敗和多日沒有成功的單個備份,這都是他們要注意的重點。因此,某個錯過備份的得分會隨著時間呈指數級增長,這些得分的不同聚合,讓團隊能對備份的整體健康度有一個有效而快速的了解。

  比如,在一天內,某個數據錯失一次備份,得1分,一天錯失50次備份,就是50分。但在三天內的一次數據庫錯失,就是27分(3的3次冪),三天內50次,這是很嚴重的問題,得分就是1350(50乘以3的3次冪)。這會在他們的監控圖上出現一個巨大的波峰,團隊會馬上對其采取行動。

  恢復

  在系統管理員中有句老話:“如果你沒有測試過你的備份,就等于沒有備份。”

  因此,Facebook團隊構建了一個測試系統,會持續地從措施2開始,將數據恢復到測試服務器上。恢復完成后,他們會執行多次數據完整性檢查。如果有任何反復出現的問題,系統就會報警,提醒相關人員關注、審核。該系統可以發現所有問題,包括MySQL的bug,到備份過程中的紕漏,并可以讓他們更靈活地應對備份環境中的變化。

  他們構建了一個名為ORC(ORC恢復協調器的遞歸縮寫)的系統,工程師如何需要恢復他們所用工具的數據庫的過去版本,就可以以自服務方式使用該系統恢復數據。對于快速開發來說還是挺方便的。

  在結尾,Eric Barrett說道:

備份不是最迷人的工程工作。它們即是技術活,又是重復性的,如果一切正常,沒人會注意。它們也是跨學科和團隊的,需要懂得系統、網絡和軟件等多方面的專業知識。但是,確保你的記憶和聯系安全無誤,這是無比重要的事情,而且到最后,也是充滿回報的事情。

  有網友問到:

在不運行mysqld的RBU上,你們如何完成二進制日志的流傳送?什么是模擬從進程?

  Facebook的MySQL性能工程師Harrison Fisk給出了答案:

我們使用mysqlbinlog的–never–選項,并有一個用Python開發的小包裝程序,會監控并保證mysqlbinlog運行成功。

it知識庫Facebook如何實現PB級別數據庫自動化備份,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 色姣姣狠狠撩综合网 | 国产h视频在线观看免费 | 成人免费网址在线 | 日本污ww视频网站 | 亚洲精品无码一区二区三区四虎 | 成人国产亚洲精品A区天堂蜜臀 | 亚洲 日韩经典 中文字幕 | 国产福利视频在线观看福利 | 日韩在线看片中文字幕不卡 | 色尼姑久久超碰在线 | 和美女啪啪啪动态图 | 女人高潮久久久叫人喷水 | 最近免费中文字幕MV在线视频3 | 男生脱美女内裤内衣动态图 | 暖暖的视频完整视频免费韩国 | 草比比过程图 | 亚洲欧美中文日韩v在线 | 日本十八禁无遮拦啪啪漫画 | 国产AV精品白浆一区二 | 一区二区三区毛AAAA片特级 | 少妇系列之白嫩人妻 | 偷上邻居熟睡少妇 | 曰本少妇高潮久久久久久 | 久久国产高清视频 | 伊人久久大香线蕉综合电影网 | 蜜芽国产在线精品欧美 | 扒开屁股眼往里面夹东西 | 日韩精品 中文字幕 有码 | 97超碰免费人妻中文 | 国产亚洲精品久久久久久无码网站 | 九九热免费在线观看 | 国产精品久久久久婷婷五月色婷婷 | 欧美高清视频www夜色资源网 | 浪潮色诱AV久久久久久久 | 亚洲 欧美 清纯 校园 另类 | 精品国产自在自线官方 | 理论片在线观看片免费 | 99久久无码一区人妻A片蜜 | 99热在线视频 | 国内精品久久久久影院网站 | 国产一区私人高清影院 |