Xtrabackup流備份,增量和壓縮小結
【問題背景】
1、 針對MySQL檔案比較大,需要壓縮的資料庫。 如500G資料庫,xtrabackup備份後檔案為500G,備份完成後再壓縮打包,相當於檔案讀寫3次。
2、 對於磁碟IO不好的從庫,整個過程會持續好幾個小時,有時把IO直接搞到100%, 導致從庫延時很大。
3、 xtrabackup的xbstream流備份,直接備份後,通過管道直接壓縮,這樣把原約3次的IO,減少為一次,整個使用時間也變短了。
【適合使用情境】
1、 資料庫檔案比較大,要壓縮的庫;導致整個備份時間長,且要求從庫延遲不能太大的庫。
【線上使用樣本】
主站有一組機器已測試通過,簡單對比:
1、 xtrabackup全量備份,不壓縮,直接tar包170G, 用時80分鐘; xtrabackup流備份+libz2壓縮,檔案大小46G, 用時40分鐘。
2、 備份過程中兩個的IO util對比:
常規備份,不壓縮:
Xbstream備份+壓縮
【基本使用原理】
1 備份步驟
由於xbstream+壓縮備份後,無備份目錄,xtrabackup可指定--extra-lsndir目錄,此目錄只存放此次備份的xtrabackup_checkpoints檔案;後面的增量備份時,--incremental-basedir就指向前一日的extra-lsndir目錄便可。
1) 全量備份命令:
innobackupex --user=dump --password=xxx --host=127.0.0.1 --slave-info --stream=xbstream --extra-lsndir="$lsndir" $baseDir 2>>"$backupLog" | lbzip2 -kv -n 10 > "$backup_file" 2>>"$backupLog"
2) 增量備份命令:
innobackupex --user=dump --password=xxx --host=127.0.0.1 --slave-info --stream=xbstream --extra-lsndir="$lsndir" --incremental --incremental-basedir="$last_lsndir" $baseDir 2>>"$backupLog" | lbzip2 -kv -n 10 > "$backup_file" 2>>"$backupLog"
2、 還原步驟
備份後產生的為壓縮了的檔案,所以要解壓,再用xbstream開啟流體檔案(較之原來還原,多了此步驟)。
1) 解壓壓縮的檔案:lbzip2 -dkv -n 10 2013-07-14_bak_full.bz2
2) 解壓液體檔案為目錄: xbstream -x < 2013-07-14_bak_full -C /work/bak/2013-07-14_full/
後面步驟和原來的還原步驟相同。
MySQL管理之使用XtraBackup進行熱備
MySQL開源備份工具Xtrabackup備份部署
MySQL Xtrabackup備份和恢複
用XtraBackup實現MySQL的主從複製快速部署【主不鎖表】
安裝和使用 Percona 推出的 Xtrabackup 備份 MySQL
XtraBackup 的詳細介紹:請點這裡
XtraBackup 的:請點這裡
本文永久更新連結地址: