天天看點

xtrabackup指令用法實戰

上篇整理了innobackupex指令的用法:innobackupex指令用法實戰,接下來介紹xtrabackup指令的用法。其中xtrabackup指令使用說明可以參考:Percona XtraBackup使用說明

完全備份

1.建立備份

2.将備份推送到測試機

3.準備備份

4.恢複備份

#關閉資料庫:
[root@test mysql]# systemctl stop mariadb
#恢複備份
[root@test backup]# rsync -avrP /data/backup/xtrabackup/ /var/lib/mysql/
[root@test mysql]# chown -R mysql:mysql /var/lib/mysql
#啟動資料庫:
[root@test mysql]# systemctl start mariadb
           

現在資料已經恢複到執行完整備份指令時的時間。檢視資料:

xtrabackup指令用法實戰
xtrabackup指令用法實戰

增量備份

1.建立增量備份

首先先建立完全備份:

建立第一次增量備份:

建立第二次增量備份:

2.推送備份到測試機:

[root@linux-node1 backup]# scp -r xtrabackup/ [email protected]:/data/backup/
[root@linux-node1 backup]# scp -r inc1/ [email protected]:/data/backup/
[root@linux-node1 backup]# scp -r inc2/ [email protected]:/data/backup/
           

3.準備備份

先準備基礎備份:

将第一次增量備份應用到完全備份:

準備第二次增量備份是一個類似的過程:

4.恢複資料

#關閉資料庫:
[root@test mysql]# systemctl stop mariadb
#恢複資料:
[root@test backup]# rsync -avrP /data/backup/xtrabackup/ /var/lib/mysql/
[root@test mysql]# chown -R mysql:mysql /var/lib/mysql
#啟動資料庫:
[root@test mysql]# systemctl start mariadb
           

現在資料已經恢複到執行第二次增量備份指令時的時間。檢視資料:

xtrabackup指令用法實戰
xtrabackup指令用法實戰

xtrabackup參數說明

具體使用方法可以參考:Percona XtraBackup使用說明

通用選項:
    -u, --user=name
    -p, --password[=name]
    -P, --port=#
    -H, --host=name
    -S, --socket=name

備份選項:
    --backup    #建立備份并且放入--target-dir目錄中
    --target-dir   #指定backup的目的地,如果目錄不存在,xtrabakcup會建立。如果目錄存在且為空則成功。不會覆寫已存在的檔案。
    示例:$ xtrabackup --backup --target-dir=/data/backups/

增量選項:
    --incremental-basedir
    示例:$ xtrabackup --backup --target-dir=/data/backups/inc1 --incremental-basedir=/data/backups/base

壓縮解壓選項:
    --compress  #壓縮
    --compress-threads=n   #啟用n個線程進行壓縮
    --decompress  #準備資料之前先解壓

加密解密選項:
    --encrypt=AES128|AES192|AES256
    --encrypt-key=ENCRYPTION_KEY   #使用适當長度的加密密鑰。不建議在通過指令行通路機器的情況下使用此選項,是以可以将該密鑰視為過程資訊的一部分
    --encrypt-key-file=KEYFILE     #可從中讀取适當長度的原始密鑰的檔案的名稱。該檔案必須是一個簡單的二進制(或文本)檔案,其中包含準确使用的密鑰

    --encrypt-threads    #可以指定多個線程并行地進行加密
    --encrypt-chunk-size #可用于指定每個加密線程的工作加密緩沖區的大小(以位元組為機關)(預設值為64K)

    --decrypt  #解密

準備選項:
    --prepare    #實作通過復原未送出的事務及同步已經送出的事務至資料檔案使資料檔案處于一緻性狀态
    --apply-log-only   #prepare備份的時候隻執行redo階段,用于增量備份(最後一次增量備份的準備不需要此選項)。

恢複選項:
    --copy-back:做資料恢複時将備份資料檔案拷貝到MySQL伺服器的datadir。
    --move-back:這個選項與--copy-back相似,唯一的差別是它不拷貝檔案,而是移動檔案到目的地。這個選項移除backup檔案,用時候必須小心。
    還可以通過rsync或cp來恢複檔案
    示例:$ rsync -avrP /data/backup/ /var/lib/mysql/
           

參數說明:

--apply-log-only:prepare備份的時候隻執行redo階段,用于增量備份。
--backup:建立備份并且放入--target-dir目錄中
--close-files:不保持檔案打開狀态,xtrabackup打開表空間的時候通常不會關閉檔案句柄,目的是為了正确處理DDL操作。如果表空間數量非常巨大并且不适合任何限制,一旦檔案不在被通路的時候這個選項可以關閉檔案句柄.打開這個選項會産生不一緻的備份。
--compact:建立一份沒有輔助索引的緊湊備份
--compress:壓縮所有輸出資料,包括事務日志檔案和中繼資料檔案,通過指定的壓縮算法,目前唯一支援的算法是quicklz.結果檔案是qpress歸檔格式,每個xtrabackup建立的*.qp檔案都可以通過qpress程式提取或者解壓縮
--compress-chunk-size=#:壓縮線程工作buffer的位元組大小,預設是64K
--compress-threads=#:xtrabackup進行并行資料壓縮時的worker線程的數量,該選項預設值是1,并行壓縮('compress-threads')可以和并行檔案拷貝('parallel')一起使用。例如:'--parallel=4 --compress --compress-threads=2'會建立4個IO線程讀取資料并通過管道傳送給2個壓縮線程。
--create-ib-logfile:這個選項目前還沒有實作,目前建立Innodb事務日志,你還是需要prepare兩次。
--datadir=DIRECTORY:backup的源目錄,mysql執行個體的資料目錄。從my.cnf中讀取,或者指令行指定。
--defaults-extra-file=[MY.CNF]:在global files檔案之後讀取,必須在指令行的第一選項位置指定。
--defaults-file=[MY.CNF]:唯一從給定檔案讀取預設選項,必須是個真實檔案,必須在指令行第一個選項位置指定。
--defaults-group=GROUP-NAME:從配置檔案讀取的組,innobakcupex多個執行個體部署時使用。
--export:為導出的表建立必要的檔案
--extra-lsndir=DIRECTORY:(for --bakcup):在指定目錄建立一份xtrabakcup_checkpoints檔案的額外的備份。
--incremental-basedir=DIRECTORY:建立一份增量備份時,這個目錄是增量别分的一份包含了full bakcup的Base資料集。
--incremental-dir=DIRECTORY:prepare增量備份的時候,增量備份在DIRECTORY結合full backup建立出一份新的full backup。
--incremental-force-scan:建立一份增量備份時,強制掃描所有增在備份中的資料頁即使完全改變的page bitmap資料可用。
--incremetal-lsn=LSN:建立增量備份的時候指定lsn。
--innodb-log-arch-dir:指定包含歸檔日志的目錄。隻能和xtrabackup --prepare選項一起使用。
--innodb-miscellaneous:從My.cnf檔案讀取的一組Innodb選項。以便xtrabackup以同樣的配置啟動内置的Innodb。通常不需要顯示指定。
--log-copy-interval=#:這個選項指定了log拷貝線程check的時間間隔(預設1秒)。
--log-stream:xtrabakcup不拷貝資料檔案,将事務日志内容重定向到标準輸出直到--suspend-at-end檔案被删除。這個選項自動開啟--suspend-at-end。
--no-defaults:不從任何選項檔案中讀取任何預設選項,必須在指令行第一個選項。
--databases=#:指定了需要備份的資料庫和表。
--database-file=#:指定包含資料庫和表的檔案格式為databasename1.tablename1為一個元素,一個元素一行。
--parallel=#:指定備份時拷貝多個資料檔案并發的程序數,預設值為1。
--prepare:xtrabackup在一份通過--backup生成的備份執行還原操作,以便準備使用。
--print-default:列印程式參數清單并退出,必須放在指令行首位。
--print-param:使xtrabackup列印參數用來将資料檔案拷貝到datadir并還原它們。
--rebuild_indexes:在apply事務日志之後重建innodb輔助索引,隻有和--prepare一起才生效。
--rebuild_threads=#:在緊湊備份重建輔助索引的線程數,隻有和--prepare和rebuild-index一起才生效。
--stats:xtrabakcup掃描指定資料檔案并列印出索引統計。
--stream=name:将所有備份檔案以指定格式流向标準輸出,目前支援的格式有xbstream和tar。
--suspend-at-end:使xtrabackup在--target-dir目錄中生成xtrabakcup_suspended檔案。在拷貝資料檔案之後xtrabackup不是退出而是繼續拷貝日志檔案并且等待知道xtrabakcup_suspended檔案被删除。這項可以使xtrabackup和其他程式協同工作。
--tables=name:正規表達式比對database.tablename。備份比對的表。
--tables-file=name:指定檔案,一個表名一行。
--target-dir=DIRECTORY:指定backup的目的地,如果目錄不存在,xtrabakcup會建立。如果目錄存在且為空則成功。不會覆寫已存在的檔案。
--throttle=#:指定每秒操作讀寫對的數量。
--tmpdir=name:當使用--print-param指定的時候列印出正确的tmpdir參數。
--to-archived-lsn=LSN:指定prepare備份時apply事務日志的LSN,隻能和xtarbackup --prepare選項一起用。
--user-memory = #:通過--prepare prepare備份時候配置設定多大記憶體,目的像innodb_buffer_pool_size。預設值100M如果你有足夠大的記憶體。1-2G是推薦值,支援各種機關(1MB,1M,1GB,1G)。
--version:列印xtrabackup版本并退出。
--xbstream:支援同時壓縮和流式化。需要客服傳統歸檔tar,cpio和其他不允許動态streaming生成的檔案的限制,例如動态壓縮檔案,xbstream超越其他傳統流式/歸檔格式的的優點是,并發stream多個檔案并且更緊湊的資料存儲(是以可以和--parallel選項選項一起使用xbstream格式進行streaming)。
           

參考連結

http://www.cnblogs.com/zhoujinyi/p/5893333.html