您好,登錄后才能下訂單哦!
xtrabackup備份工具
下載地址 https://www.percona.com/downloads/XtraBackup/LATEST/
Xtrabackup有兩個主要的工具:xtrabackup、innobackupex
1、xtrabackup只能備份InnoDB和XtraDB兩種數據表,而不能備份MyISAM數據表 ,不能備份表結構
2、innobackupex是參考了InnoDB Hotbackup的innoback腳本修改而來的.innobackupex是一個perl腳本封裝,封裝了xtrabackup。主要是為了方便的 同時備份InnoDB和MyISAM引擎的表,但在處理myisam時需要加一個讀鎖。并且加入了一些使用的選項。如slave-info可以記錄備份恢 復后,作為slave需要的一些信息,根據這些信息,可以很方便的利用備份來重做slave。
xtrabackup
備份時常規參數
--defaults-file=#
默認配置文件的路徑,如果不該參數,xtrabackup將從依次從以下位置查找配置文件/etc/my.cnf、/etc/mysql/my.cnf、/usr/local/etc/my.cnf、~/.my.cnf,并讀取配置文件中的[mysqld]和[xtrabackup]配置段。[mysqld]中只需要指定datadir、innodb_data_home_dir、innodb_data_file_path、innodb_log_group_home_dir、innodb_log_files_in_group、innodb_log_file_size6個參數即可讓xtrabackup正常工作。
--defaults-extra-file=#
如果使用了該參數,在讀取了全局配置文件之后,會再讀取這里指定的配置文件
--target-dir=name
備份文件的c目錄路徑
--backup
實施備份到target-dir
--prepare
實施對備份文件進行恢復前的準備(生成InnoDB log file)
--print-param
打印備份或恢復時需要的參數
--use-memory=#
該參數在 prepare 的時候使用,控制prepare時innodb實例使用的內存量
--suspend-at-end
在target-dir目錄下產生一個xtrabackup_suspended文件,將xtrabackup進程掛起,不停地將數據文件的變化同步到備份文件,直到用戶手工刪除xtrabackup_suspended文件
--throttle=#
每秒IO次數,限制backup時使用的I/O操作量,使備份對數據庫正常業務的影響最小化
--log-stream
該參數在backup的時候使用,將xtrabackup_logfile的內容輸出到標準輸出,使用該參數時會自動使用suspend-at-end參數,innobackupex腳本的stream 模式會使用該參數。
--incremental-lsn=name
增量備份時只拷貝LSN比該參數指定值新的ibd pages,前次備份到了哪個LSN可以看前次備份集的xtrabackup_checkpoints文件
--incremental-basedir=name
該參數在backup的時候使用,備份比該參數指定位置的備份集新的idb pages
--incremental-dir=name
該參數在prepare的時候使用,指定prepare時產生的.delta 文件和日志文件的存放路徑
--databases=name
--tables=name
在備份file-per-table類型的數據文件時使用,使用正則表達式指定需要備份的innodb表
--datadir=name
MySQL數據庫的數據文件目錄。
--stream
生成壓縮文件,速度比較慢
全備的備份還原:
xtrabackup --defaults-file=/data/work/mysql-5.5.38/data/mysql3306/my3306.cnf --backup --target-dir=/data/bak_test/1
給備份做恢復前準備。
xtrabackup --defaults-file=/data/work/mysql-5.5.38/data/mysql3306/my3306.cnf --prepare --target-dir=/data/bak_test/1
增量備份:
給增量備份做恢復前準備
xtrabackup --defaults-file=/data/work/mysql-5.5.38/data/mysql3306/my3306.cnf --prepare --target-dir=/data/bak_test/2
拷貝備份到數據庫目錄下
修改權限并重啟數據
重啟
innobackupex
常規參數
--defaults-file
同xtrabackup的--defaults-file參數
--apply-log
對xtrabackup的--prepare參數的封裝
--copy-back
做數據恢復時將備份數據文件拷貝到MySQL服務器的datadir ;
--remote-host=HOSTNAME
通過ssh將備份數據存儲到進程服務器上;
--stream=[tar]
備份文件輸出格式, tar時使用tar4ibd , 該文件可在XtarBackup binary文件中獲得.如果備份時有指定--stream=tar, 則tar4ibd文件所處目錄一定要在$PATH中(因為使用的是tar4ibd去壓縮, 在XtraBackup的binary包中可獲得該文件)。
在使用參數stream=tar備份的時候,你的xtrabackup_logfile可能會臨時放在/tmp目錄下,如果你備份的時候并發寫入較大的話xtrabackup_logfile可能會很大(5G+),很可能會撐滿你的/tmp目錄,可以通過參數--tmpdir指定目錄來解決這個問題。
--tmpdir=DIRECTORY
當有指定--remote-host or --stream時, 事務日志臨時存儲的目錄, 默認采用MySQL配置文件中所指定的臨時目錄tmpdir
--redo-only --apply-log組,
強制備份日志時只redo ,跳過rollback。這在做增量備份時非常必要。
--use-memory=#
該參數在prepare的時候使用,控制prepare時innodb實例使用的內存量
--throttle=IOS
同xtrabackup的--throttle參數
--sleep=是給ibbackup使用的,指定每備份1M數據,過程停止拷貝多少毫秒,也是為了在備份時盡量減小對正常業務的影響,具體可以查看ibbackup的手冊 ;
--compress[=LEVEL]
對備份數據迚行壓縮,僅支持ibbackup,xtrabackup還沒有實現;
--include=REGEXP
對xtrabackup參數--tables的封裝,也支持ibbackup。備份包含的庫表,例如:--include="test.*",意思是要備份test庫中所有的表。如果需要全備份,則省略這個參數;如果需要備份test庫下的2個表:test1和test2,則寫成:--include="test.test1|test.test2"。也可以使用通配符,如:--include="test.test*"。
--databases=LIST
列出需要備份的databases,如果沒有指定該參數,所有包含MyISAM和InnoDB表的database都會被備份;
--uncompress
解壓備份的數據文件,支持ibbackup,xtrabackup還沒有實現該功能;
--slave-info,
備份從庫, 加上--slave-info備份目錄下會多生成一個xtrabackup_slave_info 文件, 這里會保存主日志文件以及偏移, 文件內容類似于:CHANGE MASTER TO MASTER_LOG_FILE='', MASTER_LOG_POS=0
--socket=SOCKET
指定mysql.sock所在位置,以便備份進程登錄mysql.
--databases=name
指定要備份的庫
--tables=name
在備份file-per-table類型的數據文件時使用,使用正則表達式指定需要備份的innodb表
--incremental-basedir= 上一個備份目錄
--incremental 增量備份
全備 innobackupex --user=root --password=xxxxx--defaults-file=/data/work/mysql-5.5.38/data/mysql3306/my3306.cnf /data/bak_test/3
恢復前的準備 xtrabackup --defaults-file=/data/work/mysql-5.5.38/data/mysql3306/my3306.cnf --prepare --target-dir=/data/bak_test/3/2015-05-28_09-59-28
apply-log,為了加快速度,一般建議設置--use-memory,這個步驟完成之后,目錄/backup/mysql/data/2013-10-29_09-05-25下的備份文件已經準備就緒
拷貝數據到數據庫數據目錄下對文件進行權限修改啟動數據。
增量備份:
增量備份需要基于全備,先假設我們已經有了一個全備(x )或基于上一個增量備份之上,在該全表的基礎上做增量備份。
--defaults-file=/data/work/mysql-5.5.38/data/mysql3306/my3306.cnf --user=root --password=xxxx --incremental-basedir=/data/bak_test/3/2015-05-28_10-23-35 --incremental /data/bak_test/
曾備的還原
模式
innobackupex --apply-log --redo-only BASE-DIR
innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1
innobackupex --apply-log BASE-DIR --incremental-dir=INCREMENTAL-DIR-2
其中BASE-DIR是指全備目錄,INCREMENTAL-DIR-1是指第一次的增量備份,INCREMENTAL-DIR-2是指第二次的增量備份,以此類推。
第一步是在所有備份目錄下重做已提交的日志
innobackupex --apply-log --redo-only /data/bak_test/3/2015-05-28_10-23-35
innobackupex --apply-log --redo-only /data/bak_test/3/2015-05-28_10-23-35 --incremental-dir=/data/bak_test/2015-05-28_10-34-11
回滾未完成的日志:
innobackupex --apply-log /data/bak_test/3/2015-05-28_10-23-35
準備數據 prepare ,恢復前的準備 xtrabackup --defaults-file=/data/work/mysql-5.5.38/data/mysql3306/my3306.cnf --prepare --target-dir=/data/bak_test/3/2015-05-28_10-23-35
拷貝數據到數據庫目錄下并修改權限啟動數據即可。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。