二、innobackupex 和 xtrabackup備份詳解
註:innobackupex會根據/et/my.cnf來確定MySQL的資料位元置。
1.標準備份:
innobackupex [--defaults-file=/etc/my.cnf] --user=root [--host=192.168.1.52] [--password=xxx] [--port=3306] /data/back_data/ 2>/data/back_data/1.log
備份的目錄是/data/back_data/,這裡的2>/data/back_data/1.log,是將備份過程中的輸出資訊重新導向到1.log
innobackupex-1.5.1 –slave-info …..
–slave-info會記錄複製主日誌的 複製點,便於重新做複製用。(用在備份從機器用)
備份後的檔案:
xtrabackup_binlog_info — 存放binlog的資訊。(binlog需要另外拷貝備份,如果需要binlog的話)
xtrabackup_checkpoints — 存放備份的起始位置和結束位置。
恢複:
首先停掉資料庫,然後刪除資料庫目錄下的所有資料庫檔案.
cd /data/mysql_data
rm -rf * # 刪除資料目錄裡的所有檔案
innobackupex-1.5.1 --user=root --apply-log /data/back_data/2010-10-26_16-09-37 # 應用日誌
innobackupex-1.5.1 --user=root --copy-back /data/back_data/2010-10-26_16-09-37
預設innobackupex-1.5.1會將二進位日誌資訊存放在檔案xtrabackup_binlog_info中發(方便做Slave)。
cd /data
chown -R mysql:mysql mysql_data/
重啟mysql服務
2.打包(Tar)備份:
innobackupex-1.5.1 --user=root [--password=xxx] --stream=tar /data/back_data/2/ 2>/data/back_data/2.log 1>/data/back_data/2.tar
還原:
#cd /data/back_data/2/
#tar ixvf 2.tar
# ls
2.tar backup-my.cnf ibdata1 ibdata2 mablevi mysql xtrabackup_binlog_info xtrabackup_checkpoints xtrabackup_logfile
準備還原
# innobackupex-1.5.1 --user=xxx [--password=xxx]--apply-log /data/back_data/
……
innobackupex: completed OK!
刪除資料目錄裡的所有檔案
rm -rf /data/mysql_data/*
拷貝:
# innobackupex-1.5.1 --user=xxx [--password=xxx] --copy-back /data/back_data/
……
innobackupex: completed OK!
cd /data
chown -R mysql:mysql mysql_data/
重啟mysql服務
3. 壓縮(tar gzip)備份
innobackupex-1.5.1 --user=root [--password=xxx] --stream=tar
/data/back_data/2/ 2>/data/back_data/2.log | gzip > /data/back_data/2.tar.gz
這裡使用了管道|將innobackupex-1.5.1作為gzip的標準輸入。恢複,只需要使用tar -izxvf 解壓對應的檔案後,操作完全同標準備份。
還原:
使用tar –izxvf 解壓對應的檔案後,操作完全同標準備份。
#cd /data/back_data/2/
#tar ixvf 2.tar
# ls
backup-my.cnf ibdata1 ibdata2 mablevi mysql xtrabackup_binlog_info xtrabackup_checkpoints xtrabackup_logfile
準備還原:
# innobackupex-1.5.1 --user=xxx [--password=xxx] --apply-log /data/back_data/2/
……
innobackupex: completed OK!
刪除資料目錄裡的所有檔案
rm -rf /data/mysql_data/*
# innobackupex-1.5.1 --user=xxx [--password=xxx] --copy-back /data/back_data/2/
cd /data
chown -R mysql:mysql mysql_data/
重啟mysql服務
———————————————————————————————————————
xtrabackup 備份和恢複
備份:
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data/
恢複:
需要執行兩次xtrabackup –prepare
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/back_data/
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/back_data/
注意,xtrabackup只備份資料檔案,並不備份資料表結構(.frm),所以使用xtrabackup恢複的時候,你必須有對應表結構檔案(.frm)。
增量備份:
1. 全量備份
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data/
2. 增量備份
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data_inc/ --incremental-
basedir=/data/back_data/
在增量備份的目錄下,資料檔案都是以.delta結尾的。增量備份只備份上一次全量備份後被修改過的page,所以增量備份只暫用較少的空間。增量備份可以在增量備份的基礎上增量。
增量備份恢複:
我們需要分別對全量、增量備份各做一次prepare操作。
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/back_data/2010-10-26_16-09-37
xtrabackup --prepare --target-dir=/data/back_data/2010-10-26_16-09-37--incremental-
dir=/data/back_data_inc
xtrabackup --prepare --target-dir=/data/back_data/ #這一步不是必須的
這樣,/data/back_data/下的資料檔案就可以直接放到你的MySQL資料目錄下,恢複資料了。
再次提醒,xtrabackup只備份InnoDB資料檔案,表結構是不備份的,所以恢複的時候,你必須有對應表結構檔案(.frm)。
rm -rf /data/mysql_data/ib*
cp -i /data/back_data/2010-10-26_16-09-37/ib* /data/mysql_data/
cd /data
chown -R mysql:mysql mysql_data/
2.innobackupex 與 xtrabackup 相結合
首先,innobackupex全備份:
innobackupex --user=root /data/back_data/ 2>/data/back_data/1.log #會產生一個時間檔案夾,這裡假如是2010-10-29_15-57-44
然後,xtrabackup 做增量備份:
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data_inc/4 --incremental-basedir=/data/back_data/2010-10-29_15-57-44
恢複:
首先停掉資料庫,備份二進位日誌(如果有的話),然後刪除資料庫目錄下的所有資料庫檔案.
cd /data/mysql_data
rm -rf * # 刪除資料目錄裡的所有檔案
恢複全量備份:
innobackupex --user=root --apply-log /data/back_data/2010-10-29_15-57-44 # 應用日誌
innobackupex --user=root --copy-back /data/back_data/2010-10-29_15-57-44 # 拷貝檔案
恢複增量備份:
xtrabackup --prepare --target-dir=/data/back_data/2010-10-29_15-57-44 --incremental-dir=/data/back_data_inc/5
cd /data
chown -R mysql:mysql mysql_data/
重啟mysql服務。