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工具的備份過程原理圖   

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 tables

7 停止xtrabackup_log進程

全庫恢復的過程
這一階段會啓動xtrabackup內嵌的innodb實例,將xtrabackup日誌xtrabackup_Log進行回放,將提交的事務信息變更應用到innodb數據或表空間,同時回滾未提交的事務

    wKioL1lh5E2TbZ-7AACE0FG0D4k802.jpg        

 

增量備份

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

        

    wKioL1lh5GuA-B2xAAFH7_lDh3U535.jpg    

增量備份的恢復

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

1 數據文件的恢復 分3部分 全備 增量備份和xtrabackup_log

2 對未提交事務的回滾

wKioL1lh5Iix38qCAACuPmccu3o754.jpg    

        innobackupex的使用案例

    wKiom1lh5KKBQsjTAAA8hUfupb8778.jpg

1 創建備份用戶

 wKiom1lh5LWi3kmjAABIoGmhsmE760.jpg       

進行數據庫全備

wKioL1lh5NKhjUSUAAAimVXNPm0105.jpg        

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

wKiom1lh5OTz-jCVAAHUqrChj5k724.jpg    

查看對應生成的文件

wKioL1lh5P-i4_wOAAHcwDEQ1EY575.jpg            

需要注意的幾個文件    

wKiom1lh5RCwmHiqAAC4ogRJIJw502.jpg

刪掉某個數據庫,進行全庫恢復

wKioL1lh5SPxPw38AAAoPzOa2jc849.jpg    

關閉數據庫

wKioL1lh5TOg-6CoAAB200IMMjI851.jpg    

恢復

wKiom1lh5UqToLoUAADAU8aTrTU922.jpg        

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

wKioL1lh5WPAolQRAAE6q4s4Ydw620.jpg     

更改權限

 

[root@MASTER_03 tmp]# chown -R mysql.mysql /data/3306/data/

啓動mysqld

[root@MASTER_03 tmp]# /etc/init.d/mysqld start

wKiom1lh5ZGBLmvuAAFEo7oZ5u0281.jpg                


發現數據是已經成功恢復

    

    先全備

wKioL1lh5b6TT1a_AABsqVBfPxY623.jpg    

增量備份

wKioL1lh5dKQleBnAAF8V7jd6wo026.jpg    


此時再插入數據

wKioL1lh5fSR6wh7AAA1NTDr8Dw307.jpg

增量備份2

wKioL1lh5gDAPIkNAAChi-o3IWw538.jpg  

增量備份的恢復

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

1 恢復完全備份

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

3 對整體的完全備份進行恢復,回滾未提交的數據

          

模擬測試

wKiom1lh5jzQEBjsAAD-pUJSH-k755.jpg

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章