mysql中的XtraBackup的備份原理

來源:互聯網
上載者:User

標籤:mysql中的xtrabackup的備份原理

mysql中的XtraBackup的備份原理

xtrabackup的官方為 :  

http://www.percona.com/software/percona-xtrabackup。

    xtrabackup包含兩個主要的工具,即xtrabackup和innobackupex,二者區別如下:

1 xtrabackup只能備份innodb和xtradb兩種引擎的表,而不能備份myisam引擎的表
2 innobackupex是一個封裝了xtrabackup的Perl指令碼,支援同時備份innodb和myisam,但在對myisam備份時需要加一個全域的讀鎖。還有就是myisam不支援增量備份。

      innobackupex工具的備份過程原理圖   

650) this.width=650;" src="https://s3.51cto.com/wyfs02/M00/9B/55/wKiom1lh5BLx9EeFAAFqJE2_UBo591.jpg" title="2017-07-09_155308.jpg" alt="wKiom1lh5BLx9EeFAAFqJE2_UBo591.jpg" />


    ,備份開始的時候

1 首先會啟動一個xtrabackup_log後台檢測的進程,即時檢測mysql redo的變化,一旦發現redo有新的日誌寫入,立刻將日誌寫入到記錄檔xtrabackup_log中2 複製innodb的資料檔案和系統資料表空間檔案idbdata1到對應的以預設時間戳記為備份目錄的地方3 複製結束後,執行flush table with read lock操作4 複製.frm .myd .myi檔案5 並且在這一時刻獲得binary log 的位置6 將表進行解鎖unlock tables7 停止xtrabackup_log進程全庫恢複的過程這一階段會啟動xtrabackup內嵌的innodb執行個體,將xtrabackup日誌xtrabackup_Log進行回放,將提交的事務資訊變更應用到innodb資料或資料表空間,同時復原未提交的事務

    650) this.width=650;" src="https://s5.51cto.com/wyfs02/M00/9B/55/wKioL1lh5E2TbZ-7AACE0FG0D4k802.jpg" title="2017-07-09_155622.jpg" alt="wKioL1lh5E2TbZ-7AACE0FG0D4k802.jpg" />        

 

增量備份

增量備份主要是通過拷貝innodb中有變更的頁(指的是LSN大於xtrabackup_checkpoints中的LSN號)。增量備份是基於全備的,第一次增量備份的資料是基於上一次全備,之後的每一次增倍都是基於上一次的增倍,最終達到一致性的增倍,增倍的過程中,和全備很類似,區別在於第二步

        

    650) this.width=650;" src="https://s5.51cto.com/wyfs02/M01/9B/55/wKioL1lh5GuA-B2xAAFH7_lDh3U535.jpg" title="2017-07-09_155651.jpg" alt="wKioL1lh5GuA-B2xAAFH7_lDh3U535.jpg" />    

增量備份的恢複

和全庫恢複類似,也需要兩步

1 資料檔案的恢複 分3部分 全備 增量備份和xtrabackup_log

2 對未提交事務的復原

650) this.width=650;" src="https://s1.51cto.com/wyfs02/M02/9B/55/wKioL1lh5Iix38qCAACuPmccu3o754.jpg" title="2017-07-09_155726.jpg" alt="wKioL1lh5Iix38qCAACuPmccu3o754.jpg" />    

        innobackupex的使用案例

    650) this.width=650;" src="https://s3.51cto.com/wyfs02/M02/9B/55/wKiom1lh5KKBQsjTAAA8hUfupb8778.jpg" title="2017-07-09_155811.jpg" alt="wKiom1lh5KKBQsjTAAA8hUfupb8778.jpg" />

1 建立備份使用者

 650) this.width=650;" src="https://s5.51cto.com/wyfs02/M00/9B/55/wKiom1lh5LWi3kmjAABIoGmhsmE760.jpg" title="2017-07-09_155835.jpg" alt="wKiom1lh5LWi3kmjAABIoGmhsmE760.jpg" />       

進行資料庫全備

650) this.width=650;" src="https://s5.51cto.com/wyfs02/M02/9B/55/wKioL1lh5NKhjUSUAAAimVXNPm0105.jpg" title="2017-07-09_155905.jpg" alt="wKioL1lh5NKhjUSUAAAimVXNPm0105.jpg" />        

使用以下參數進行全庫備份

650) this.width=650;" src="https://s2.51cto.com/wyfs02/M00/9B/55/wKiom1lh5OTz-jCVAAHUqrChj5k724.jpg" title="2017-07-09_155930.jpg" alt="wKiom1lh5OTz-jCVAAHUqrChj5k724.jpg" />    

查看對應產生的檔案

650) this.width=650;" src="https://s2.51cto.com/wyfs02/M01/9B/55/wKioL1lh5P-i4_wOAAHcwDEQ1EY575.jpg" title="2017-07-09_155955.jpg" alt="wKioL1lh5P-i4_wOAAHcwDEQ1EY575.jpg" />            

需要注意的幾個檔案    

650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/9B/55/wKiom1lh5RCwmHiqAAC4ogRJIJw502.jpg" title="2017-07-09_160018.jpg" alt="wKiom1lh5RCwmHiqAAC4ogRJIJw502.jpg" />

刪掉某個資料庫,進行全庫恢複

650) this.width=650;" src="https://s5.51cto.com/wyfs02/M01/9B/55/wKioL1lh5SPxPw38AAAoPzOa2jc849.jpg" title="2017-07-09_160041.jpg" alt="wKioL1lh5SPxPw38AAAoPzOa2jc849.jpg" />    

關閉資料庫

650) this.width=650;" src="https://s5.51cto.com/wyfs02/M02/9B/55/wKioL1lh5TOg-6CoAAB200IMMjI851.jpg" title="2017-07-09_160104.jpg" alt="wKioL1lh5TOg-6CoAAB200IMMjI851.jpg" />    

恢複

650) this.width=650;" src="https://s5.51cto.com/wyfs02/M00/9B/55/wKiom1lh5UqToLoUAADAU8aTrTU922.jpg" title="2017-07-09_160133.jpg" alt="wKiom1lh5UqToLoUAADAU8aTrTU922.jpg" />        

以上對應的目錄就是innobackupex全備份自己建立的目錄

650) this.width=650;" src="https://s2.51cto.com/wyfs02/M00/9B/55/wKioL1lh5WPAolQRAAE6q4s4Ydw620.jpg" title="2017-07-09_160210.jpg" alt="wKioL1lh5WPAolQRAAE6q4s4Ydw620.jpg" />     

更改許可權

 

[[email protected]_03 tmp]# chown -R mysql.mysql /data/3306/data/

啟動mysqld

[[email protected]_03 tmp]# /etc/init.d/mysqld start

650) this.width=650;" src="https://s3.51cto.com/wyfs02/M02/9B/55/wKiom1lh5ZGBLmvuAAFEo7oZ5u0281.jpg" title="2017-07-09_160317.jpg" alt="wKiom1lh5ZGBLmvuAAFEo7oZ5u0281.jpg" />                


探索資料是已經成功恢複

    

    先全備

650) this.width=650;" src="https://s5.51cto.com/wyfs02/M02/9B/55/wKioL1lh5b6TT1a_AABsqVBfPxY623.jpg" title="2017-07-09_160401.jpg" alt="wKioL1lh5b6TT1a_AABsqVBfPxY623.jpg" />    

增量備份

650) this.width=650;" src="https://s3.51cto.com/wyfs02/M02/9B/55/wKioL1lh5dKQleBnAAF8V7jd6wo026.jpg" title="2017-07-09_160431.jpg" alt="wKioL1lh5dKQleBnAAF8V7jd6wo026.jpg" />    


此時再插入資料

650) this.width=650;" src="https://s1.51cto.com/wyfs02/M00/9B/55/wKioL1lh5fSR6wh7AAA1NTDr8Dw307.jpg" title="2017-07-09_160455.jpg" alt="wKioL1lh5fSR6wh7AAA1NTDr8Dw307.jpg" />

增量備份2

650) this.width=650;" src="https://s4.51cto.com/wyfs02/M00/9B/55/wKioL1lh5gDAPIkNAAChi-o3IWw538.jpg" title="2017-07-09_160522.jpg" alt="wKioL1lh5gDAPIkNAAChi-o3IWw538.jpg" />  

增量備份的恢複

增量備份的恢複需要有3個步驟

1 恢複完全備份

2 恢複增量備份到完全備份(開始恢複的增量備份要添加--redo-only參數,到最後一次增量備份要去掉--redo-only)

3 對整體的完全備份進行恢複,復原未提交的資料

          

類比測試

650) this.width=650;" src="https://s3.51cto.com/wyfs02/M01/9B/55/wKiom1lh5jzQEBjsAAD-pUJSH-k755.jpg" title="2017-07-09_160606.jpg" alt="wKiom1lh5jzQEBjsAAD-pUJSH-k755.jpg" />

測試完畢,恢複還是比較簡單的。

本文出自 “摯愛Linux” 部落格,請務必保留此出處http://mpflinux.blog.51cto.com/12173924/1945677

mysql中的XtraBackup的備份原理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.