Facebook中怎么做MySQL備份-創(chuàng)新互聯(lián)

Facebook中怎么做MySQL備份,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、蒙自網(wǎng)站維護(hù)、網(wǎng)站推廣。

Facebook是怎么做MySQL備份的

從mysqldump到Xtrabackup

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

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

我們通過修改增強(qiáng)Xtrabackup來滿足我們額外的需求:

1.支持快速的表級還原

2.增強(qiáng)全量和增量備份

3.支持混合增量備份

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

Facebook是怎么做MySQL備份的

1.表級還原

我們寫了一個PHP腳本,來從二進(jìn)制備份文件中讀取并還原指定的表.當(dāng)前,這個腳本還不能自己從備份文件中讀取信息創(chuàng)建表結(jié)構(gòu),因此必須事先準(zhǔn)備好一個對應(yīng)的空的表.我們對Xtrabackup也做了相應(yīng)的修改來支持這個工具.這個修改就是支持Xtrabackup導(dǎo)入導(dǎo)出單表.單表的還原比全量還原快得多,因?yàn)橹恍枰獜奈募凶x取相應(yīng)的表的信息.

2.調(diào)整全量和增量復(fù)制

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

Xtrabackup只有本地增量備份功能,也就是說增量備份的文件必須要和MySQL在同臺主機(jī)上.我們修改使之支持遠(yuǎn)程增量備份,也就是通過類似管道的方式將備份的數(shù)據(jù)同時發(fā)送到遠(yuǎn)程主機(jī),.如果先在本地做增量備份,然后通過網(wǎng)絡(luò)傳到遠(yuǎn)程主機(jī),對我們來說是不可取的,因?yàn)闀蟠笤黾颖镜氐膶懖僮?

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

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

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

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

因?yàn)槲覀冞M(jìn)行了改進(jìn),有了一種混合增量的備份,通過避免讀取未修改的page來減少IO次數(shù),在我們的場景下,這種混合增量備份減少了20%-30%的IO,IO的大小從16KB到8MB不等.

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

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

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,的支持。

文章名稱:Facebook中怎么做MySQL備份-創(chuàng)新互聯(lián)
本文鏈接:http://www.muchs.cn/article20/ddedjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站網(wǎng)站設(shè)計(jì)公司、網(wǎng)站維護(hù)、微信公眾號、微信小程序、營銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司