XtraBackup官網
www.percona.com
下載XtraBackup
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.3.3/binary/redhat/6/i386/percona-xtrabackup-2.3.3-1.el6.i686.rpm
XtraBackup基本安裝
yum install percona-xtrabackup-2.3.3-1.el6.i686.rpm
xtrabackup 選項
xtrabackup 選項
xtrabackup 工具有許多參數,具體可去官網查詢(xtrabackup 參數選項 | innobackupex 參數選項),這裏簡單介紹 innobackupex 一些常用的參數。
1) innobackupex 參數選項
--defaults-file=[MY.CNF] //指定配置文件:只能從給定的文件中讀取默認選項。 且必須作爲命令行上的第一個選項;必須是一個真實的文件,它不能是一個符號鏈接。
--databases=# //指定備份的數據庫和表,格式爲:--database="db1[.tb1] db2[.tb2]" 多個庫之間以空格隔開,如果此選項不被指定,將會備份所有的數據庫。
--include=REGEXP //用正則表達式的方式指定要備份的數據庫和表,格式爲 --include=‘^mydb[.]mytb’ ,對每個庫中的每個表逐一匹配,因此會創建所有的庫,不過是空的目錄。--include 傳遞給 xtrabackup --tables。
--tables-file=FILE //此選項的參數需要是一個文件名,此文件中每行包含一個要備份的表的完整名稱,格式爲databasename.tablename。該選項傳遞給 xtrabackup --tables-file,與--tables選項不同,只有要備份的表的庫纔會被創建。
注意:部分備份(--include、--tables-file、--database)需要開啓 innodb_file_per_table 。
--compact //創建緊湊型備份,忽略所有輔助索引頁,只備份data page;通過--apply-log中重建索引--rebuild-indexs。
--compress //此選項指示xtrabackup壓縮備份的InnoDB數據文件,會生成 *.qp 文件。
--decompress //解壓縮qp文件,爲了解壓縮,必須安裝 qpress 工具。 Percona XtraBackup不會自動刪除壓縮文件,爲了清理備份目錄,用戶應手動刪除 * .qp文件:find /data/backup -name "*.qp" | xargs rm。
--no-timestamp //指定了這個選項備份將會直接存儲在 BACKUP-DIR 目錄,不再創建時間戳文件夾。
--apply-log //應用 BACKUP-DIR 中的 xtrabackup_logfile 事務日誌文件。一般情況下,在備份完成後,數據尚且不能用於恢復操作,因爲備份的數據中可能會包含尚未提交的事務或已經提交但尚未同步至數據文件中的事務。因此,此時數據文件仍處於不一致狀態。“準備”的主要作用正是通過回滾未提交的事務及同步已經提交的事務至數據文件使得數據文件處於一致性狀態。
--use-memory=# //此選項接受一個字符參數(1M/1MB,1G/1GB,默認100M),僅與--apply-log一起使用,該選項指定prepare時用於崩潰恢復(crash-recovery)的內存。
--copy-back //拷貝先前備份所有文件到它們的原始路徑。但原路徑下不能有任何文件或目錄,除非指定 --force-non-empty-directories 選項。
--force-non-empty-directories //恢復時指定此選項,可使 --copy-back 和 --move-back 複製文件到非空目錄,即原data目錄下可以有其他文件,但是不能有與恢復文件中同名的文件,否則恢復失敗。
--rsync //此選項可優化本地文件(非InnoDB)的傳輸。rsync工具一次性拷貝所有非InnoDB文件,而不是爲每個文件單獨創建cp,在備份恢復很多數據庫和表時非常高效。此選項不能和 --stream 一起使用。
--incremental //這個選項告訴 xtrabackup 創建一個增量備份,而不是完全備份。它傳遞到 xtrabackup 子進程。當指定這個選項,可以設置 --incremental-lsn 或 --incremental-basedir。如果這2個選項都沒有被指定,--incremental-basedir 傳遞給 xtrabackup 默認值,默認值爲:基礎備份目錄的第一個時間戳備份目錄。
--incremental-basedir=DIRECTORY //該選項接受一個字符串參數,該參數指定作爲增量備份的基本數據集的完整備份目錄。它與 --incremental 一起使用。
--incremental-dir=DIRECTORY //該選項接受一個字符串參數,該參數指定了增量備份將與完整備份相結合的目錄,以便進行新的完整備份。它與 --incremental 選項一起使用。
--redo-only //在“準備基本完整備份” 和 “合併所有的增量備份(除了最後一個增備)”時使用此選項。它直接傳遞給xtrabackup的 xtrabackup --apply-log-only 選項,使xtrabackup跳過"undo"階段,只做"redo"操作。如果後面還有增量備份應用到這個全備,這是必要的。有關詳細信息,請參閱xtrabackup文檔。
--parallel=NUMBER-OF-THREADS //此選項接受一個整數參數,指定xtrabackup子進程應用於同時備份文件的線程數。請注意,此選項僅適用於文件級別,也就是說,如果您有多個.ibd文件,則它們將被並行複製; 如果您的表一起存儲在一個表空間文件中,它將不起作用。
2) xtrabackup 參數選項
--apply-log-only //這個選項使在準備備份(prepare)時,只執行重做(redo)階段,這對於增量備份非常重要。
xtrabackup 全量備份恢復
創建用於備份恢復的用戶 pxb 並賦予權限
grant reload,process,lock tables,replication client on *.* to 'pxb'@'localhost' identified by '123456';
創建存放目錄
mkdir -pv /data/pxb
進行數據庫全備
innobackupex --defaults-file=/etc/my.cnf --user=pxb --password=123456 --socket=/tmp/mysql.sock /data/pxb
可以看到整個備份過程:連接數據庫,開始拷貝redo log,拷貝innodb表文件,鎖表、拷貝非innodb表文件,停止拷貝redo log,解鎖。
查看生成的文件
xtrabackup 增量備份恢復