第10章--->Xtrabackup
一、Xtrabackup概述
1.1、簡介
Xtrabackup是一個對InnoDB做數據備份的工具,支持在線熱備份(備份時不影響數據讀寫),是商業備份工具InnoDB Hotbackup的一個很好的替代品。
Xtrabackup有兩個主要的工具:xtrabackup、innobackupex
(1)xtrabackup只能備份InnoDB和XtraDB兩種數據表,而不能備份MyISAM數據表
(2)innobackupex-1.5.1則封裝了xtrabackup,是一個腳本封裝,所以能同時備份處理innodb和myisam,但在處理myisam時需要加一個讀鎖
1.2、安裝
#wget http://www.percona.com/redir/downloads/XtraBackup/XtraBackup-2.0.0/binary/Linux/x86_64/percona-xtrabackup-2.0.0.tar.gz
# yum -y install perl-*
# tar -xvf percona-xtrabackup-2.0.0.tar.gz
# mv percona-xtrabackup-2.0.0 /usr/local/xtrabackup
# vim /etc/profile
export PATH=$PATH:/usr/local/xtrabackup/bin
#source /etc/profile
1.3、全量備份
#innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 /opt/backup/ >>/opt/backup/backup.log 2>&1
/opt/backup備份存放的目錄
1.4、全量恢復
# /etc/init.d/mysqld stop
# rm /data/dbdata/* -rf 備份成功後。刪除掉這個MYSQL的數據目錄試試?
開始恢復步驟一
# innobackupex --apply-log --defaults-file=/etc/my.cnf --user=root --password=123456 /opt/backup/2014-04-06_08-25-19/
開始恢復步驟二
# cd /data/dbdata
#innobackupex --user=root --password=zeng --defaults-file=/etc/my.cnf --copy-back /opt/backup/2014-04-06_08-25-19/
1.5、增量備份
(1)、先做全量備份
#innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 /opt/backup/ >>/opt/backup/backup.log 2>&1
(2)、在Mysql裏面多創建一個表
(3)、在做增量備份
#--incremental:增量備份的文件夾
#--incremental-dir:針對哪個做增量備份
# innobackupex --user=root --password=123456 --incremental /opt/backup/ --incremental-dir 2014-04-06_10-11-36
#cd /opt/backup
#ls –l
2014-04-06_10-11-36 全量備份包
2014-04-06_12-40-48 增量備份包
1.6、增量恢復
#/etc/init.d/mysqld stop
# innobackupex --copy-back /databackup/2014-04-06_12-40-48 /
# /etc/init.d/mysqld start
1.7、企業真實環境
(1)、
innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf --database=zztx --stream=tar /data/back_data/ 2>/data/back_data/zztx.log | gzip 1>/data/back_data/zztx.tar.gz
說明:
--database=zztx 單獨對zztx數據庫做備份 ,若是不添加此參數那就那就是對全庫做備份
2>/data/back_data/zztx.log 輸出信息寫入日誌中
1>/data/back_data/zztx.tar.gz 打包壓縮存儲到該文件中
(2)、
此處可以寫個腳本做備份(backup.sh)
#!/bin/sh
echo "開始備份..."`date`
log=zztx01_`date +%y%m%d%H%M`.log
str=zztx01_`date +%y%m%d%H%M`.tar.gz
innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf --database=zztx --stream=tar /data/back_data/ 2>/data/back_data/$log | gzip 1>/data/back_data/$str
echo "備份完畢..."`date`
(3)、恢復數據
1) 先停止數據庫:service mysqld stop
2) 解壓 tar -izxvf zztx.tar.gz -C /data/back_data/db/ (沒有db ,需要mkdir /data/back_data/db/)
3) 恢復 innobackupex --user=root --password --defaults-file=/etc/my.cnf --apply-log /data/back_data/db/ (--apply-log選項的命令是準備在一個備份上啓動mysql服務)
innobackupex --user=root --password --defaults-file=/etc/my.cnf --copy-back /data/back_data/db/ (--copy-back 選項的命令從備份目錄拷貝數據,索引,日誌到my.cnf文 件裏規定的初始位置。)
4) 賦權 chown -R mysql.mysql /var/lib/mysql/*
5) 重啓數據庫 service mysqld restart
6) 刪除垃圾 cd /var/lib/mysql/ && rm xtrabackup*
進入數據庫查看,一切OK~
一、Xtrabackup概述
1.1、簡介
Xtrabackup是一個對InnoDB做數據備份的工具,支持在線熱備份(備份時不影響數據讀寫),是商業備份工具InnoDB Hotbackup的一個很好的替代品。
Xtrabackup有兩個主要的工具:xtrabackup、innobackupex
(1)xtrabackup只能備份InnoDB和XtraDB兩種數據表,而不能備份MyISAM數據表
(2)innobackupex-1.5.1則封裝了xtrabackup,是一個腳本封裝,所以能同時備份處理innodb和myisam,但在處理myisam時需要加一個讀鎖
1.2、安裝
#wget http://www.percona.com/redir/downloads/XtraBackup/XtraBackup-2.0.0/binary/Linux/x86_64/percona-xtrabackup-2.0.0.tar.gz
# yum -y install perl-*
# tar -xvf percona-xtrabackup-2.0.0.tar.gz
# mv percona-xtrabackup-2.0.0 /usr/local/xtrabackup
# vim /etc/profile
export PATH=$PATH:/usr/local/xtrabackup/bin
#source /etc/profile
1.3、全量備份
#innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 /opt/backup/ >>/opt/backup/backup.log 2>&1
/opt/backup備份存放的目錄
1.4、全量恢復
# /etc/init.d/mysqld stop
# rm /data/dbdata/* -rf 備份成功後。刪除掉這個MYSQL的數據目錄試試?
開始恢復步驟一
# innobackupex --apply-log --defaults-file=/etc/my.cnf --user=root --password=123456 /opt/backup/2014-04-06_08-25-19/
開始恢復步驟二
# cd /data/dbdata
#innobackupex --user=root --password=zeng --defaults-file=/etc/my.cnf --copy-back /opt/backup/2014-04-06_08-25-19/
1.5、增量備份
(1)、先做全量備份
#innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 /opt/backup/ >>/opt/backup/backup.log 2>&1
(2)、在Mysql裏面多創建一個表
(3)、在做增量備份
#--incremental:增量備份的文件夾
#--incremental-dir:針對哪個做增量備份
# innobackupex --user=root --password=123456 --incremental /opt/backup/ --incremental-dir 2014-04-06_10-11-36
#cd /opt/backup
#ls –l
2014-04-06_10-11-36 全量備份包
2014-04-06_12-40-48 增量備份包
1.6、增量恢復
#/etc/init.d/mysqld stop
# innobackupex --copy-back /databackup/2014-04-06_12-40-48 /
# /etc/init.d/mysqld start
1.7、企業真實環境
(1)、
innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf --database=zztx --stream=tar /data/back_data/ 2>/data/back_data/zztx.log | gzip 1>/data/back_data/zztx.tar.gz
說明:
--database=zztx 單獨對zztx數據庫做備份 ,若是不添加此參數那就那就是對全庫做備份
2>/data/back_data/zztx.log 輸出信息寫入日誌中
1>/data/back_data/zztx.tar.gz 打包壓縮存儲到該文件中
(2)、
此處可以寫個腳本做備份(backup.sh)
#!/bin/sh
echo "開始備份..."`date`
log=zztx01_`date +%y%m%d%H%M`.log
str=zztx01_`date +%y%m%d%H%M`.tar.gz
innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf --database=zztx --stream=tar /data/back_data/ 2>/data/back_data/$log | gzip 1>/data/back_data/$str
echo "備份完畢..."`date`
(3)、恢復數據
1) 先停止數據庫:service mysqld stop
2) 解壓 tar -izxvf zztx.tar.gz -C /data/back_data/db/ (沒有db ,需要mkdir /data/back_data/db/)
3) 恢復 innobackupex --user=root --password --defaults-file=/etc/my.cnf --apply-log /data/back_data/db/ (--apply-log選項的命令是準備在一個備份上啓動mysql服務)
innobackupex --user=root --password --defaults-file=/etc/my.cnf --copy-back /data/back_data/db/ (--copy-back 選項的命令從備份目錄拷貝數據,索引,日誌到my.cnf文 件裏規定的初始位置。)
4) 賦權 chown -R mysql.mysql /var/lib/mysql/*
5) 重啓數據庫 service mysqld restart
6) 刪除垃圾 cd /var/lib/mysql/ && rm xtrabackup*
進入數據庫查看,一切OK~