Percona最新發布XtraBackup for MySQL 8.0
更多精彩請關注“資料和雲”公眾號
在下文所有的廢話之前,先說正事:
Percona在9月12日,終於宣佈第一個測試用的XtraBackup for MySQL 8.0版本給大家試用:
MySQL 8.0今年4月份GA以來,雖然大家多有測試,但實際上敢用到生產環境的,只是極少數.而我個人認為最重要的原因之一,就是缺乏一個可用的備份工具.而在MySQL備份這件事情上,功德無量的Percona公司,卻遲遲沒有見到釋出針對MySQL 8.0的備份工具,著實讓人著急.
在9月12日之前,已知的MySQL 8.0的備份方式有這些:
官方MySQL商業版備份工具. 這個名為 MySQL Enterprise Backup
的軟體,是官方商業版本的一部分,如果需要用,得掏錢買授權.先不說用的人比較少,使用文件本身也不在 MySQL 的公開文件導致學都很繁瑣,就只是照著例項數收錢這點,就斷絕了現在這種千庫萬表的 MySQL 大規模部署形勢下的使用.使用mysqldump命令.mysqldump 本身只是匯出資料的命令列工具,但結合事務選項,以及master data選項,就可以匯出滿足一致性的備份SQL檔案,即原生,又省心省力,對於小型資料庫來說,是非常不錯的選擇(這裡的小型,一般指的是100GB以下的資料庫),但對於非常大個頭的資料庫來說,一來mysqldump是單執行緒匯出,速度比較慢,說不定得搞一天,又由於MySQL的事務可見性的要求,undo檔案會被執行匯出的事務一直拖著不讓縮小(如果沒有使用獨立表空間,那問題就更嚴重了–ibdata1過大的問題早年困擾不知多少DBA),導致磁碟空間比較大.而另外一個比較少遇到,但遇到就非常心碎的問題是,由於匯出的是單個文字檔案,如果文字檔案中,某一個位元組的儲存出現問題,那麼整個資料庫的恢復就到此為止了.
FLUSH TABLES WITH READ LOCK;見過很多以為備份資料庫就是把資料檔案直接複製走的哥們,如果他們在複製檔案前,使用命令停掉所有的寫入,之後再複製,也不能說人家有問題,奈何大部分人就是少這一步,而且,考慮到8.0開始,授權表都是innodb了,如果不小心,導致授權表損壞了,那可真是苦都沒地方哭了.
考慮到很多人的備份不追求事務一致性,但速度要快,這種情況下,還有兩個工具可以用,一個是mysql自帶的mysqlpump,和 mysqldump 不同,mysqlpump支援表級別的並行匯出,加快了匯出速度,但放棄了事務的一致性要求.而mydumper則是早年,社群開發的一款並行匯出MySQL資料的命令列工具,可以在一個表上,發起多個基於主鍵(或者唯一鍵)分割槽的並行匯出,速度更快.
備份是為了恢復,恢復就要講究恢復時間,那怎麼樣加快資料的恢復時間呢?那就是MySQL複製給出的答案: 建立一個開啟了延遲備份的從庫,在需要恢復資料到指定時間點的時候,直接用start slave until命令搞定. 注:個人建議是,對重要資料庫,以及超大資料庫(比如1TB以上的),都使用這種方式,來降低恢復時間,參考官方文件:(複製連結開啟) https://dev.mysql.com/doc/refman/8.0/en/replication-delayed.html
既然說起從庫,那麼在從庫上,就可以很方便地搞備份了,比如搞一個沒有業務訪問的從庫,需要備份的時候,停掉slave(政治正確的叫法是replication)執行緒,然後用前面提到的方式3,4進行備份,也不是不可以,或者說,考慮到主庫需要承擔訪問壓力,這種備份方式從效率和一致性,以及對線上業務擾動綜合看,實際上是非常好的一個方式.
資料檔案存在磁碟上,既然方式3可以用cp命令拷貝,實際上就是允許使用所有檔案系統/塊裝置/儲存裝置的快照備份了,只要記得執行前後FLUSH TABLES WITH READ LOCK;,那備份就有保障了.
我故意漏掉了myisam這過時玩意的備份恢復的手段,估計沒人看也應該沒人用,就不寫了.
在前面列舉的種種備份中,最理想的,實際上就是MySQL Enterprise Backup這種,所謂真正的熱備份,在備份效率,與備份的一致性,安全性等方面,都是非常好的選擇,開源世界中,對應的就是 XtraBackup.
這裡也不多說XtraBackup本身的意義與使用方式,估計用MySQL的DBA,沒有幾個沒有折騰過這玩意的,下文主要討論的,還是Xtrabackup for MySQL 8.0.
首先看看Percona公司自己的說法(以下為作者提取的重點,原文參考前面的連結地址):
雖然已經發布了,但版本號是 8.0.1,並且提示為實驗性質的(experimental)alpha版本.
innobackupex命令終於被徹底刪除,宣告一個時代的正式落幕,當然,也宣告著,很多MySQL自動化備份指令碼需要改了.
由於MySQL 8.0資料目錄,以及redo格式的種種變化,新的Xtrabackup for MySQL 8.0,僅僅提供給MySQL 8.0(以及Percona自己基於MySQL 8.0改的Percona Server),對於5.x版本,依然需要使用XtraBackup 2.4來備份,當然,也宣告著,很多MySQL自動化備份指令碼需要改的地方更多了.
目前提供支援的作業系統版本為(其中Ubuntu 14.04 Trusty以及Debian 8 Jessie後續可能不再支援):
RHEL/Centos 6.x
RHEL/Centos 7.x
Ubuntu 14.04 Trusty*
Ubuntu 16.04 Xenial
Ubuntu 18.04 Bionic
Debian 8 Jessie*
Debian 9 Stretch
5. 如果需要下載,需要從Percona的repo源中下載,沒有單獨的下載地址(打算從官方軟體下載頁面找進去的同志可以放棄了):
使用方法還是沒有變化,想要試一把的同志,可以開搞了.
原創:劉偉。
投稿:有投稿意向技術人請在公眾號對話方塊留言。
轉載:意向文章下方留言。
更多精彩請關注 “資料和雲” 公眾號 。
招聘專欄
雲和恩墨(北京)資訊科技有限公司
Oracle 售前工程師(廣州、深圳、上海、武漢、北京、石家莊)
Oracle 高階工程師(上海、深圳、北京、成都、昆明、貴州、西寧)
MySQL 技術經理(上海、南京、成都)
MySQL 工程師(上海、杭州)
超高待遇:豐厚的年終獎,五險一金,高額學習基金,團建旅遊,法定節假日,福利假期等。
推薦他人成功入職有好禮(iPhone X)相送 。
投遞簡歷至郵箱:[email protected]