1. 程式人生 > >Percona最新發布XtraBackup for MySQL 8.0

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的備份方式有這些:

  1. 官方MySQL商業版備份工具. 這個名為 MySQL Enterprise Backup 

    的軟體,是官方商業版本的一部分,如果需要用,得掏錢買授權.先不說用的人比較少,使用文件本身也不在 MySQL 的公開文件導致學都很繁瑣,就只是照著例項數收錢這點,就斷絕了現在這種千庫萬表的 MySQL 大規模部署形勢下的使用.

  2. 使用mysqldump命令.mysqldump 本身只是匯出資料的命令列工具,但結合事務選項,以及master data選項,就可以匯出滿足一致性的備份SQL檔案,即原生,又省心省力,對於小型資料庫來說,是非常不錯的選擇(這裡的小型,一般指的是100GB以下的資料庫),但對於非常大個頭的資料庫來說,一來mysqldump是單執行緒匯出,速度比較慢,說不定得搞一天,又由於MySQL的事務可見性的要求,undo檔案會被執行匯出的事務一直拖著不讓縮小(如果沒有使用獨立表空間,那問題就更嚴重了–ibdata1過大的問題早年困擾不知多少DBA),導致磁碟空間比較大.而另外一個比較少遇到,但遇到就非常心碎的問題是,由於匯出的是單個文字檔案,如果文字檔案中,某一個位元組的儲存出現問題,那麼整個資料庫的恢復就到此為止了.

  3. FLUSH TABLES WITH READ LOCK;見過很多以為備份資料庫就是把資料檔案直接複製走的哥們,如果他們在複製檔案前,使用命令停掉所有的寫入,之後再複製,也不能說人家有問題,奈何大部分人就是少這一步,而且,考慮到8.0開始,授權表都是innodb了,如果不小心,導致授權表損壞了,那可真是苦都沒地方哭了.

  4. 考慮到很多人的備份不追求事務一致性,但速度要快,這種情況下,還有兩個工具可以用,一個是mysql自帶的mysqlpump,和 mysqldump 不同,mysqlpump支援表級別的並行匯出,加快了匯出速度,但放棄了事務的一致性要求.而mydumper則是早年,社群開發的一款並行匯出MySQL資料的命令列工具,可以在一個表上,發起多個基於主鍵(或者唯一鍵)分割槽的並行匯出,速度更快.

  5. 備份是為了恢復,恢復就要講究恢復時間,那怎麼樣加快資料的恢復時間呢?那就是MySQL複製給出的答案: 建立一個開啟了延遲備份的從庫,在需要恢復資料到指定時間點的時候,直接用start slave until命令搞定. 注:個人建議是,對重要資料庫,以及超大資料庫(比如1TB以上的),都使用這種方式,來降低恢復時間,參考官方文件:(複製連結開啟) https://dev.mysql.com/doc/refman/8.0/en/replication-delayed.html

  6. 既然說起從庫,那麼在從庫上,就可以很方便地搞備份了,比如搞一個沒有業務訪問的從庫,需要備份的時候,停掉slave(政治正確的叫法是replication)執行緒,然後用前面提到的方式3,4進行備份,也不是不可以,或者說,考慮到主庫需要承擔訪問壓力,這種備份方式從效率和一致性,以及對線上業務擾動綜合看,實際上是非常好的一個方式.

  7. 資料檔案存在磁碟上,既然方式3可以用cp命令拷貝,實際上就是允許使用所有檔案系統/塊裝置/儲存裝置的快照備份了,只要記得執行前後FLUSH TABLES WITH READ LOCK;,那備份就有保障了.

我故意漏掉了myisam這過時玩意的備份恢復的手段,估計沒人看也應該沒人用,就不寫了.

在前面列舉的種種備份中,最理想的,實際上就是MySQL Enterprise Backup這種,所謂真正的熱備份,在備份效率,與備份的一致性,安全性等方面,都是非常好的選擇,開源世界中,對應的就是 XtraBackup.

這裡也不多說XtraBackup本身的意義與使用方式,估計用MySQL的DBA,沒有幾個沒有折騰過這玩意的,下文主要討論的,還是Xtrabackup for MySQL 8.0.

首先看看Percona公司自己的說法(以下為作者提取的重點,原文參考前面的連結地址):

  1. 雖然已經發布了,但版本號是 8.0.1,並且提示為實驗性質的(experimental)alpha版本.

  2. innobackupex命令終於被徹底刪除,宣告一個時代的正式落幕,當然,也宣告著,很多MySQL自動化備份指令碼需要改了.

  3. 由於MySQL 8.0資料目錄,以及redo格式的種種變化,新的Xtrabackup for MySQL 8.0,僅僅提供給MySQL 8.0(以及Percona自己基於MySQL 8.0改的Percona Server),對於5.x版本,依然需要使用XtraBackup 2.4來備份,當然,也宣告著,很多MySQL自動化備份指令碼需要改的地方更多了.

  4. 目前提供支援的作業系統版本為(其中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]

末4.png