mysql中的XtraBackup的備份原理mysql
xtrabackup的官方下載地址爲 : sql
http://www.percona.com/software/percona-xtrabackup。
xtrabackup包含兩個主要的工具,即xtrabackup和innobackupex,兩者區別以下:數據庫
1 xtrabackup只能備份innodb和xtradb兩種引擎的表,而不能備份myisam引擎的表
2 innobackupex是一個封裝了xtrabackup的Perl腳本,支持同時備份innodb和myisam,但在對myisam備份時須要加一個全局的讀鎖。還有就是myisam不支持增量備份。
innobackupex工具的備份過程原理圖
ide
如圖,備份開始的時候
工具
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數據或表空間,同時回滾未提交的事務
增量備份測試
增量備份主要是經過拷貝innodb中有變動的頁(指的是LSN大於xtrabackup_checkpoints中的LSN號)。增量備份是基於全備的,第一次增量備份的數據是基於上一次全備,以後的每一次增倍都是基於上一次的增倍,最終達到一致性的增倍,增倍的過程當中,和全備很相似,區別在於第二步spa
增量備份的恢復3d
和全庫恢復相似,也須要兩步日誌
1 數據文件的恢復 分3部分 全備 增量備份和xtrabackup_logblog
2 對未提交事務的回滾
innobackupex的使用案例
1 建立備份用戶
進行數據庫全備
使用如下參數進行全庫備份
查看對應生成的文件
須要注意的幾個文件
刪掉某個數據庫,進行全庫恢復
關閉數據庫
恢復
以上對應的目錄就是innobackupex全備份本身建立的目錄
更改權限
[root@MASTER_03 tmp]# chown -R mysql.mysql /data/3306/data/
啓動mysqld
[root@MASTER_03 tmp]# /etc/init.d/mysqld start
發現數據是已經成功恢復
先全備
增量備份
此時再插入數據
增量備份2
增量備份的恢復
增量備份的恢復須要有3個步驟
1 恢復徹底備份
2 恢復增量備份到徹底備份(開始恢復的增量備份要添加--redo-only參數,到最後一次增量備份要去掉--redo-only)
3 對總體的徹底備份進行恢復,回滾未提交的數據
模擬測試
測試完畢,恢復仍是比較簡單的。