Facebook中怎么做MySQL備份,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、蒙自網(wǎng)站維護、網(wǎng)站推廣。Facebook是怎么做MySQL備份的
從mysqldump到Xtrabackup
我們使用mysqldump來進行每日的數(shù)據(jù)庫備份,mysqldump對數(shù)據(jù)進行邏輯備份,就像應(yīng)用訪問數(shù)據(jù)庫那樣,mysqldump以SQL語句的方式從數(shù)據(jù)庫中讀取一張張表,將表結(jié)構(gòu)和數(shù)據(jù)轉(zhuǎn)保存到文該篇文章件.mysqldump較大的問題是速度太慢(對于我們的一些大的數(shù)據(jù)庫,通常要花24小時,甚至更久),并且以SQL語句的方式讀取數(shù)據(jù)可能造成磁盤的隨機讀,這就會造成主機的load增大,影響性能.對于時間太長,我們可以跑多個實例來并發(fā)的做備份,這能縮短備份的時間,但是會造成更多的load,更影響主機的性能.
另外一個可行的備份方式是進行物理備份(我們稱之為二進制備份,binarybackup),通過操作系統(tǒng)層面,讀取數(shù)據(jù)庫磁盤文件,而非通過SQL語句.這樣的話在備份的過程中,數(shù)據(jù)不能像SQL讀取的時候保持事務(wù)上一致的.只有當備份的數(shù)據(jù)文件在數(shù)據(jù)庫里復(fù)原了,他們才又一致了,這類似于數(shù)據(jù)庫down掉之重啟一樣.
我們通過修改增強Xtrabackup來滿足我們額外的需求:
1.支持快速的表級還原
2.增強全量和增量備份
3.支持混合增量備份
Xtrabackup支持增量備份,也就是備份自上次全量備份后改變的數(shù)據(jù).這樣我們就能夠減少備份的空間(比如每天一次增量備份,每周一次全量備份).Xtrabackup也支持多級增量備份,不過我們不使用,避免復(fù)雜.
Facebook是怎么做MySQL備份的
1.表級還原
我們寫了一個PHP腳本,來從二進制備份文件中讀取并還原指定的表.當前,這個腳本還不能自己從備份文件中讀取信息創(chuàng)建表結(jié)構(gòu),因此必須事先準備好一個對應(yīng)的空的表.我們對Xtrabackup也做了相應(yīng)的修改來支持這個工具.這個修改就是支持Xtrabackup導(dǎo)入導(dǎo)出單表.單表的還原比全量還原快得多,因為只需要從文件中讀取相應(yīng)的表的信息.
2.調(diào)整全量和增量復(fù)制
fb是Xtrabackup早期的增量備份功能的用戶,起初對于一些有大量表的數(shù)據(jù)庫,Xtrabackup的增量備份不起作用.后來我們和percona一起解決了這些問題.
Xtrabackup只有本地增量備份功能,也就是說增量備份的文件必須要和MySQL在同臺主機上.我們修改使之支持遠程增量備份,也就是通過類似管道的方式將備份的數(shù)據(jù)同時發(fā)送到遠程主機,.如果先在本地做增量備份,然后通過網(wǎng)絡(luò)傳到遠程主機,對我們來說是不可取的,因為會大大增加本地的寫操作.
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)這種真正的增量備份比普通的增量備份反而來的慢..這是因為普通的增量備份用8MB的chunk來讀取文件,而真正的增量備份讀取文件的大小是不定的,從16KB(INNODB中一個page的大小)到8MB,這取決于有多少連續(xù)的page是被修改過的.因此在我們的很多場景下(自上次全量備份后大概10%-30%的page修改了),真正的增量備份比普通的增量備份花了更多的IO調(diào)用.
因為我們進行了改進,有了一種混合增量的備份,通過避免讀取未修改的page來減少IO次數(shù),在我們的場景下,這種混合增量備份減少了20%-30%的IO,IO的大小從16KB到8MB不等.
下表描述了使用上述改進的方法來處理大概750GB數(shù)據(jù)時產(chǎn)生的不同結(jié)果.由于mysqldump速度的原因,mysqldump只在少數(shù)幾個數(shù)據(jù)庫上跑,我們使用gzip來對mysqldump的結(jié)果進行壓縮,很慢,但是壓縮率很高.
QPress用來壓縮二進制備份,它比gzip快多了,但是壓縮效率更低.由于我們經(jīng)常作增量備份,較少作全量備份,整個二進制備份所需要的空間和mysqldump所需要的空間還是差不多的。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,的支持。
文章名稱:Facebook中怎么做MySQL備份-創(chuàng)新互聯(lián)
本文鏈接:http://jinyejixie.com/article20/ddedjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站設(shè)計公司、網(wǎng)站維護、微信公眾號、微信小程序、營銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容