xtrabackup數據庫備份

xtrabackup備份

1、Xtrabackup概述

1.一、簡介

Xtrabackup是一個對InnoDB作數據備份的工具,支持在線熱備份(備份時不影響數據讀寫),是商業備份工具InnoDB Hotbackup的一個很好的替代品。
    Xtrabackup有兩個主要的工具:xtrabackup、innobackupex
  (1)xtrabackup只能備份InnoDB和XtraDB兩種數據表,而不能備份MyISAM數據表
  (2)innobackupex-1.5.1則封裝了xtrabackup,是一個腳本封裝,因此能同時備份處理innodb和myisam,但在處理myisam時須要加一個讀鎖mysql

 

1.二、安裝

#wgethttp://www.percona.com/redir/downloads/XtraBackup/XtraBackup-2.0.0/binary/Linux/x86_64/percona-xtrabackup-2.0.0.tar.gzsql

# yum -y install perl-*數據庫

# tar -xvf percona-xtrabackup-2.0.0.tar.gzvim

# mv percona-xtrabackup-2.0.0 /usr/local/xtrabackupapp

# vim /etc/profile工具

export PATH=$PATH:/usr/local/xtrabackup/binrest

1.三、全量備份

#innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 /opt/backup/full/ >>/opt/backup/backup.log2>&1日誌

/opt/backup備份存放的目錄 如何備份某個單庫,能夠用--database來指定索引

1.四、全量恢復

# /etc/init.d/mysql 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/

(--apply-log選項的命令是準備在一個備份上啓動mysql服務)

全量開始恢復步驟二

# cd /data/dbdata須要進入到MYSQL的數據存儲目錄在執行。

#innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf --copy-back /opt/backup/2014-04-06_08-25-19/

(--copy-back 選項的命令從備份目錄拷貝數據,索引,日誌到my.cnf文   件裏規定的初始位置。)

1.五、增量備份

(1)、先作全量備份

#mkdir /opt/backup/full

#innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 /opt/backup/full >>/opt/backup/backup.log2>&1

(2)、在Mysql裏面多建立一個庫和表

 

(3)、在作增量備份

#--incremental:增量備份

#--incremental-basedir:針對哪一個作增量備份

#mkdir /opt/backup/rec

innobackupex --defaults-file=/etc/my.cnf --incremental --incremental-basedir=/opt/backup/full/2014-12-26_14-28-31/ --user=root --password='rootmy123' /opt/backup/rec/

#cd /opt/backup

#ls –l

/opt/backup/full/2014-04-06_10-11-36全量備份包

/opt/backup/rec/2014-04-06_12-40-48增量備份包

1.六、增量恢復

先刪除剛剛建立的表,而後使用增量恢復.嘗試一下.

 

(1)先回滾沒有提交的事務

innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only /opt/backup/full/2014-12-26_15-18-23/

 

(2)將第一個增量備份合併到全量備份

innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only /opt/backup/full/2014-12-26_15-18-23/ --incremental-dir=/opt/backup/rec/2014-12-26_15-22-25/

 

(3) 增量備份只是把增量備份的內容,恢復到新建目錄/opt/backup/full/2014-12-26_15-22-25fm下,而沒有恢復到/var /opt/backup/full/2014-12-26_15-18-23/fm/ 完整備份目錄中的數據庫當中去。因此須要手工把文件移動到完整備份的數據庫目錄當中去,如不執行這步,那麼還原回來的數據只是完整備份的數據,而所作的增 量就消失了。

 

# mv 2014-12-26_17-17-14bag/ 2014-12-26_17-17-14/

 

千萬不要選擇y,否則會覆蓋掉你表結構。若是選擇y,那麼你select * from test;會提示這個test表不存在!!!

 

(4).將mysql服務中止掉.

# /etc/init.d/mysqld stop

# rm /data/mysql-data/mysql/* -rf 裏面數據所有刪除.注意先tar備份如下.

 

(5)最後COPY恢復FULL備份文件夾

innobackupex --defaults-file=/var/lib/my.cnf --copy-back /opt/backup/futll/2014-12-26_15-18-23

# /etc/init.d/mysqld start

1.七、企業真實環境

(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~

相關文章
相關標籤/搜索