Xtrabackup資料庫備份與恢復

2021-10-19 13:30:01 字數 4237 閱讀 2774

​ percona-xtrabackup是 percona公司開發的乙個用於mysql資料庫物理熱備的備份工具,支援mysql、percona server和mariadb,開源免費,是目前較為受歡迎的主流備份工具。xtrabackup只能備份innodb和xtradb兩種資料引擎的表,而不能備份myisam資料表。

測試環境:centos 7 ,mysql 5.7

有多種安裝方式,以下使用rmp包安裝方式進行演示安裝

wget

#安裝#

yum install -y percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm

#驗證#

[root@localhost peng]

# rpm -qa |grep xtrabackup

percona-xtrabackup-24-2.4.9-1.el7.x86_64

xtrabackup中主要包含兩個工具:xtrabackup 和 innobackupex

xtrabackup:是用於熱備innodb,xtradb表中資料的工具,不能備份其他型別的表,也不能備份資料表結構;

innobackupex:是將xtrabackup進行封裝的perl指令碼,提供了備份myisam表的能力。

常用選項: xtrabackup 工具有許多引數,具體可去官網查詢 (xtrabackup 引數選項 | innobackupex 引數選項)

--host指定主機

--user指定使用者名稱

--password指定密碼

--port指定埠

--databases指定資料庫,格式為:–database=「db1[.tb1] db2[.tb2]」 多個庫之間以空格隔開

--incremental建立增量備份

--incremental-basedir指定作為增量備份的基本資料集的完整備份目錄

--incremental-dir指定了增量備份將與完整備份相結合的目錄,以便進行新的完整備份

--redo-only不回滾未提交事務,在準備基本完整備份和合併除最後乙個增量之外的所有增量時,應使用此選項

--copy-back恢復備份目錄

完全備份

備份資料存放在/mnt/backup-dir/下面,innobackupex會自動建立乙個資料夾,是當前系統的時間戳

innobackupex --defaults-file=/etc/my.cnf --user=root --password=root /mnt/backup-dir/
注意:如果你指定了引數--defaults-file,那麼此引數就必須位於第乙個,否則就會報「–defaults-file must be specified first on the command line」

備份後生成的檔案中,除資料庫檔案外還有幾個檔案,其中

backup-my.cnf備份命令用到的配置選項資訊;

ib_buffer_poolbuffer pool 中的熱資料,當設定 innodb_buffer_pool_dump_at_shutdown=1 ,在關閉 mysql 時,會把記憶體中的熱資料儲存在磁碟裡 ib_buffer_pool 檔案中,位於資料目錄下;

ibdata1備份的共享表空間檔案;

xtrabackup_binlog_infomysql伺服器當前正在使用的二進位制日誌檔案及至備份這一刻為止二進位制日誌事件的位置;

xtrabackup_checkpoints備份型別(如完全或增量)、備份狀態(如是否已經為prepared狀態)和lsn(日誌序列號)範圍資訊;

xtrabackup_info記錄備份的基本資訊,uuid、備份命令、備份時間、binlog、lsn、以及其他加密壓縮等資訊;

xtrabackup_logfile備份的重做日誌檔案。

恢復全備

恢復備份到mysql的資料檔案目錄,這一過程要先關閉mysql資料庫,重新命名或者刪除原資料檔案目錄都可以,再建立乙個新的資料檔案目錄,將備份資料複製到新的資料檔案目錄下,賦權,修改許可權,啟動資料庫

關閉mysql服務,備份資料目錄或刪除資料目錄

service mysqld stop
準備(prepare)乙個完全備份,一般情況下,在備份完成後,資料尚且不能用於恢復操作,因為備份的資料中可能會包含尚未提交的事務或已經提交但尚未同步至資料檔案中的事務。因此,此時資料檔案仍處理不一致狀態。「準備」的主要作用正是通過回滾未提交的事務及同步已經提交的事務至資料檔案也使得資料檔案處於一致性狀態。

恢復資料,將備份資料檔案拷貝到資料目錄

innobackupex --defaults-file=/etc/my.cnf --copy-back /mnt/backup-dir/2021-02-18_15-10-39/
completed ok!

更改 mnt/ 目錄許可權並啟動mysql

chown -r mysql.mysql /mnt/backup-dir

service mysqld start

總結:

innobackupex 全量備份,並指定備份目錄路徑;

恢復時,直接使用--copy-back引數進行恢復,需要注意的是,在my.cnf中要指定資料檔案目錄的路徑。

增量備份

在進行增量備份時,首先要進行一次全量備份,第一次增量備份是基於全備的。

#做一次增量備份(基於當前最新的全量備份2021-02-18_15-10-39)

innobackupex --defaults-file=/etc/my.cnf --user=root --password=root --incremental /mnt/backup-dir/inc --incremental-basedir=/mnt/backup-dir/2021-02-18_15-10-39/

#第二次增量備份(以增量1為基準2021-02-18_15-15-23)

innobackupex --defaults-file=/etc/my.cnf --user=root --password=root --incremental /mnt/backup-dir/inc --incremental-basedir=/mnt/backup-dir/inc/2021-02-18_15-15-23/

恢復增量備份

#準備基於全量

#將增量1應用到完全備份

#將增量2應用到完全備份,最後一次不加 --redo-only 引數了

#恢復innobackupex --defaults-file=/etc/my.cnf --copy-back /mnt/backup-dir/2021-02-18_15-10-39/

更改 mnt/ 目錄許可權並啟動mysql

chown -r mysql.mysql /mnt/backup-dir

service mysqld start

總結:

增量備份需要使用引數--incremental指定需要備份到哪個目錄,使用--incremental-basedir指定全備目錄;--redo-only先合併全備資料目錄資料,確保全備資料目錄資料的一致性;

再將增量備份資料使用引數--incremental-dir合併到全備資料當中;

最後通過最後的全備資料進行恢復資料,如果有多個增量備份,需要逐一合併到全備資料當中,再進行恢復。

xtrabackup 資料庫備份

percona xtrabackup是一款基於mysql的熱備份的開源實用程式,它可以備份5.1到5.7版本上innodb,xtradb,myisam儲存引擎的表,xtrabackup有兩個主要的工具 xtrabackup innobackupex 1 xtrabackup只能備份innodb和xt...

xtrabackup備份mysql資料庫

xtrabackup備份mysql資料庫 1.安裝依賴包 perl dbd mysql需要mysql libs 5.1.73包,如果此包和現有mysql server衝突,需要單獨用rpm force強制安裝此包 2.安裝xtrabackup rpm ivh percona xtrabackup 2...

資料庫備份與恢復 XtraBackup

使用xtrabackup工具安裝percona rpm ivh libev 4.15 1.el6.rf.x86 64.rpm yum y install percona xtrabackup 24 2.4.7 1.el7.x86 64.rpm 命令幫助 innobackupex help 常用選項 ...