使用Percona XtraBackup熱備和恢復MySQL(一)

 

1.在http://www.percona.com/downloads/XtraBackup/LATEST/  下載對應平臺的XtraBackup,這裏使用的是 http://www.percona.com/redir/downloads/XtraBackup/XtraBackup-2.0.0/binary/Linux/x86_64/percona-xtrabackup-2.0.0.tar.gz

 

2.解壓tar -zvxf percona-xtrabackup-2.0.0.tar.gz -C /usr/local/

 

3.因爲MySQL我安裝的是Percona-Server-5.5.21,而且安裝目錄爲:/usr/local/Percona-Server-5.5.21-rel25.0-227.Linux.x86_64/,注:同樣可以用於其他MySQL版本

cd /usr/local/percona-xtrabackup-2.0.0/bin
cp * /usr/local/Percona-Server-5.5.21-rel25.0-227.Linux.x86_64/bin/

 因爲系統Path裏面已經加入

export PATH=$JAVA_HOME/bin:/usr/local/Percona-Server-5.5.21-rel25.0-227.Linux.x86_64/bin:$PATH

 

4.我的mysql的配置文件是/etc/my.cnf,如果不指定,XtraBackup默認使用此文件識別mysql安裝目錄,數據文件目錄等信息

 

5.全量備份:innobackupex --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR/,我使用/data/backup/mysql/作爲mysql備份文件存放目錄

innobackupex --user=YOUS --password=YOUS /data/backup/mysql

看到類似輸出說明備份成功,如出錯,根據提示解決

innobackupex: Backup created in directory '/data/backup/mysql/2012-05-28_19-01-32'
innobackupex: MySQL binlog position: filename 'mysql-bin.000063', position 44718229367
120528 19:07:53  innobackupex: completed OK!

可以在/data/backup/mysql/2012-05-28_19-01-32看到備份的文件

此時,cat xtrabackup_checkpoints會看到

backup_type = full-backuped
from_lsn = 0
to_lsn = 44718229367
last_lsn = 44718229367
 

 

6.全量Preparing:innobackupex --apply-log /path/to/BACKUP-DIR

innobackupex --user=YOUS --password=YOUS --apply-log /data/backup/mysql/2012-05-28_19-01-32/

 

可以看到如下生成文件:

-rw-r--r--. 1 root root          13 May 28 19:07 xtrabackup_binary
-rw-r--r--. 1 root root          26 May 29 15:07 xtrabackup_binlog_info
-rw-r--r--. 1 root root          43 May 29 15:07 xtrabackup_binlog_pos_innodb
-rw-r-----. 1 root root          85 May 29 15:07 xtrabackup_checkpoints
-rw-r-----. 1 root root     2097152 May 29 14:03 xtrabackup_logfile

cat xtrabackup_checkpoints,可以看出是全量備份並且做了prepare的

backup_type = full-prepared
from_lsn = 0
to_lsn = 49556823920
last_lsn = 49556823920

 

7.增量備份的前提是必須已經做過全量備份。

增量備份:innobackupex --incremental /path/to/BACKUP-DIR/--incremental-basedir=BASEDIR,當有了INCREMENTAL-DIR-1之後,下一次增量備份的需要基於INCREMENTAL-DIR-1,變成innobackupex --incremental /path/to/BACKUP-DIR/ --incremental-basedir=INCREMENTAL-DIR-1

全量備份的目錄是:/data/backup/mysql/2012-05-28_19-01-32

innobackupex --incremental /data/backup/mysql --incremental-basedir=/data/backup/mysql/2012-05-28_19-01-32/ --user=YOUS --password=YOUS

 

增量備份成功會生成目錄/data/backup/mysql/2012-05-29_14-25-03

cat xtrabackup_checkpoints

backup_type = incremental
from_lsn = 44718229367
to_lsn = 49556823920
last_lsn = 49556823920
 

8.增量Preparing,對每一個增量備份目錄:

innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1
innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-2

innobackupex --apply-log --redo-only /data/backup/mysql/2012-05-28_19-01-32/ --incremental-dir=/data/backup/mysql/2012-05-29_14-25-03 --user=YOUS--password=YOUS

看到如下輸出:

120529 14:29:43 InnoDB: Shutdown completed; log sequence number 49556823920
120529 14:29:43 innobackupex: completed OK!

cd BASE-DIR,cat xtrabackup_checkpoints

backup_type = full-prepared
from_lsn = 0
to_lsn = 49556823920
last_lsn = 49556823920

 當把所有的增量備份都執行Preparing後,還可以全量備份和全部的增量備份做一次Preparing,

innobackupex --apply-log BASE-DIR

 

9.恢復數據:innobackupex --copy-back BASE-DIR

 

參考:http://www.percona.com/doc/percona-xtrabackup/innobackupex/innobackupex_script.html

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章