成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Facebook是怎么做MySQL備份的?

數據庫 MySQL
Facebook是怎么做MySQL備份的?Facebook的用戶每天創造大量的數據,為了確保數據可靠的存儲,Facebook每天進行數據備份.通過將原來的邏輯備份改成定制化的物理備份,顯著地提升了備份的速度。

Facebook的用戶每天創造大量的數據,為了確保數據可靠的存儲,我們每天進行數據備份.我們通過將原來的邏輯備份改成定制化的物理備份,顯著地提升了備份的速度(不增加體積的情況下).

從mysqldump到Xtrabackup

我們使用mysqldump來進行每日的數據庫備份,mysqldump對數據進行邏輯備份,就像應用訪問數據庫那樣,mysqldump以SQL語句的方式從數據庫中讀取一張張表,將表結構和數據轉保存到文本文件.mysqldump最大的問題是速度太慢(對于我們的一些大的數據庫,通常要花24小時,甚至更久),并且以SQL語句的方式讀取數據可能造成磁盤的隨機讀,這就會造成主機的load增大,影響性能.對于時間太長,我們可以跑多個實例來并發的做備份,這能縮短備份的時間,但是會造成更多的load,更影響主機的性能.

另外一個可行的備份方式是進行物理備份(我們稱之為二進制備份,binary backup),通過操作系統層面,讀取數據庫磁盤文件,而非通過SQL語句.這樣的話在備份的過程中,數據不能像SQL讀取的時候保持事務上一致的.只有當備份的數據文件在數據庫里復原了,他們才又一致了,這類似于數據庫down掉之重啟一樣.

我們通過修改增強Xtrabackup來滿足我們額外的需求:

1.支持快速的表級還原

2.增強全量和增量備份

3.支持混合增量備份

Xtrabackup支持增量備份,也就是備份自上次全量備份后改變的數據.這樣我們就能夠減少備份的空間(比如每天一次增量備份,每周一次全量備份).Xtrabackup也支持多級增量備份,不過我們不使用,避免復雜.

1.表級還原

我們寫了一個PHP腳本,來從二進制備份文件中讀取并還原指定的表.當前,這個腳本還不能自己從備份文件中讀取信息創建表結構,因此必須事先準備好一個對應的空的表.我們對Xtrabackup也做了相應的修改來支持這個工具.這個修改就是支持Xtrabackup導入導出單表.單表的還原比全量還原快得多,因為只需要從文件中讀取相應的表的信息.

2.調整全量和增量復制

fb是Xtrabackup早期的增量備份功能的用戶,起初對于一些有大量表的數據庫,Xtrabackup的增量備份不起作用.后來我們和percona一起解決了這些問題.

Xtrabackup只有本地增量備份功能,也就是說增量備份的文件必須要和MySQL在同臺主機上.我們修改使之支持遠程增量備份,也就是通過類似管道的方式將備份的數據同時發送到遠程主機,.如果先在本地做增量備份,然后通過網絡傳到遠程主機,對我們來說是不可取的,因為會大大增加本地的寫操作.

Xtrabackup以1MB為1個chunk來讀取數據庫文件,我們發現使用8MB時,能夠使增量備份的速度快一倍,使全量備份快40%.

3.讓增量備份成為真正的增量

Xtrabackup的增量備份讀取數據庫的每個page,來判斷哪些page改變了.我們創建了一個page追蹤器,通過讀取事務日志,并且通過每個表的bitmap,來追蹤修改過的page,.這樣我們就能很好的追蹤哪些page改變了哪些沒變,我們就可以只讀取那些改變過的page.我們稱這位真正的增量備份.

不過諷刺的是,我們發現這種真正的增量備份比普通的增量備份反而來的慢..這是因為普通的增量備份用8MB的chunk來讀取文件,而真正的增量備份讀取文件的大小是不定的,從16KB(INNODB中一個page的大小)到8MB,這取決于有多少連續的page是被修改過的.因此在我們的很多場景下(自上次全量備份后大概10%-30%的page修改了),真正的增量備份比普通的增量備份花了更多的IO調用.

因為我們進行了改進,有了一種混合增量的備份,通過避免讀取未修改的page來減少IO次數,在我們的場景下,這種混合增量備份減少了20%-30%的IO,IO的大小從16KB到8MB不等.

下表描述了使用上述改進的方法來處理大概750GB數據時產生的不同結果.由于mysqldump速度的原因,mysqldump只在少數幾個數據庫上跑,我們使用gzip來對mysqldump的結果進行壓縮,很慢,但是壓縮率很高.

QPress用來壓縮二進制備份,它比gzip快多了,但是壓縮效率更低.由于我們經常作增量備份,較少作全量備份,整個二進制備份所需要的空間和mysqldump所需要的空間還是差不多的.

原文意譯:http://www.facebook.com/note.php?note_id=10150098033318920

【編輯推薦】

  1. MySQL技巧:結合相關參數 做好Limit優化
  2. 使用Limit參數實現MySQL查詢優化
  3. MySQL數據庫的優化(上)單機MySQL數據庫的優化
  4. MySQL數據庫的優化(下)MySQL數據庫的高可用架構方案
  5. MySQL觸發器如何正確使用


 

責任編輯:艾婧 來源: 發條橙子
相關推薦

2012-05-24 14:58:55

開源代碼

2017-07-20 13:11:46

Code ReviewPR評審

2016-01-05 16:17:59

云夢數據倉

2024-01-04 08:49:03

Vuescope限制

2018-01-08 14:18:14

代碼互聯網持續集成

2015-08-05 10:50:01

Facebook緩存網頁

2015-07-22 11:35:26

2022-03-10 11:25:51

InnoDB優化

2023-09-27 22:44:18

數據遷移數據庫

2015-07-30 09:01:59

2023-07-14 14:24:00

MySQL熱點數據

2024-12-04 10:47:26

2019-09-10 09:25:27

分布式系統Elasticsear

2021-05-13 07:32:17

培訓代碼同事

2016-09-21 10:18:26

阿里Dubbo性能測試

2021-05-05 10:48:33

滲透測試漏洞網絡攻擊

2011-02-18 09:56:42

Facebook人才FaceBook

2013-06-05 17:37:10

數據恢復備份

2024-11-01 12:45:28

2015-10-19 10:30:44

物聯網營銷
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩中文字幕 | 影音先锋中文字幕在线观看 | 免费精品视频在线观看 | 美国一级毛片a | 在线欧美一区二区 | 日韩精品一区二区三区在线观看 | www.亚洲一区 | 亚洲天堂二区 | 亚洲一区二区三区四区五区中文 | 18av在线播放 | 亚洲九九色 | 亚洲自拍偷拍欧美 | 亚洲综合在线视频 | 天天草视频 | 国产美女黄色片 | 欧美一区二区三区大片 | 在线一区 | 二区视频| 精品视频在线观看 | 亚洲成人一区二区 | 日韩精品一区二区三区老鸭窝 | 日韩一区在线观看视频 | 日本精品视频一区二区三区四区 | 高清av电影 | 97精品国产手机 | 亚洲91av | 狠狠爱免费视频 | 久久久精品一区二区三区四季av | 中文字幕乱码一区二区三区 | 免费黄色大片 | 国产电影一区二区在线观看 | 日韩欧美在线不卡 | 亚洲国产成人久久综合一区,久久久国产99 | 草草草草视频 | 精精国产xxxx视频在线播放7 | 天天拍天天操 | 91在线导航 | 国产免费一二三区 | 操一草 | 日本亚洲精品成人欧美一区 | 成人精品一区 |