mysql備份和恢復測試(一)--xtrabackup

suifeng2316發表於2013-04-11
--下載xtranbackup2.0.6,這裡使用的是rpm安裝
http://www.percona.com/redir/downloads/XtraBackup/XtraBackup-2.0.6/RPM/rhel5/x86_64/percona-xtrabackup-2.0.6-521.rhel5.x86_64.rpm
[root@tmg-73 soft]# rpm -ivh percona-xtrabackup-2.0.6-521.rhel5.x86_64.rpm 
warning: percona-xtrabackup-2.0.6-521.rhel5.x86_64.rpm: Header V4 DSA signature: NOKEY, key ID cd2efd2a
Preparing...                ########################################### [100%]
   1:percona-xtrabackup     ########################################### [100%]
--xtrabackup 備份和恢復測試
--1 建立測試環境
mysql> use study
mysql> create table t1 as select * from mysql.user;
mysql> insert into t1 select * from t1;                          
mysql> exit
--2 執行備份
[root@tmg-73 soft]# xtrabackup --help
[root@tmg-73 soft]# xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/home/mysql/data/temp
--3 關閉mysql 服務:
[root@tmg-73 temp]# mysqladmin shutdown
--4 刪除資料檔案和innodb log
[root@tmg-73 mysql]# rm ib
ibdata1      ib_logfile0  ib_logfile1  
[root@tmg-73 mysql]# rm -rf ib*
--5 使用xtrabackup 恢復資料
[root@tmg-73 mysql]#  xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/home/mysql/data/temp
--6 將生成的檔案拷貝備份到/home1/mysql/data/mysql
[root@tmg-73 temp]# pwd
/home/mysql/data/temp
[root@tmg-73 temp]# cp ibdata1 /home1/mysql/data/mysql
[root@tmg-73 mysql]# chown mysql:mysql ibdata1 
--使用innobackupex-1.5.1 備份和恢復
--innobackupex-1.5.1 工具是用PERL包裝過的”xtrabackup“,他不旦可以備份INNODB,還可以備份MYISAM等非事務資料庫;
[root@tmg-73 temp]# innobackupex-1.5.1  --help
[root@tmg-73 temp]# innobackupex-1.5.1 -user=root -password=zhong#123 -host=127.0.0.1 -port=3306 -slave-info -tmpdir=/home/mysql/data/temp -defaults-file=/etc/my.cnf /home/mysql/data/temp >/home/mysql/data/temp/xtrabk.log 
注意:在備份過程中,把INNODB資料檔案備份完成後,會鎖住整個庫,並開始複製MYISAM等非事務引擎的資料和.frm;
--3 關閉mysql 服務:
[root@tmg-73 temp]# mysqladmin shutdown
--4 刪除資料檔案和innodb log
[root@tmg-73 mysql]# rm * -rf
--5 使用xtrabackup 全量恢復
--1 應用日誌
-- 這個過程主要是產生REDOLOG並將備份期間產生的REDO應用到資料檔案中;
-- xtrabackup 會啟動一個INNODB程式去做,與你當前在跑的不衝突
[root@tmg-73 mysql]# innobackupex-1.5.1 -apply-log /home/mysql/data/temp/2013-04-11_16-29-44/ 
--2 複製資料檔案到資料目錄
## 這個過程將恢復好的資料複製到my.cnf中指定的資料目錄中。 這時你需要把原有的例項停掉
[root@tmg-73 mysql]# innobackupex-1.5.1 -copy-back /home/mysql/data/temp/2013-04-11_16-29-44/ 
--啟動mysql服務報錯,結果檢視目錄是root
[root@tmg-73 mysql]# ll
total 1379736
drwxr-xr-x 2 root  root        4096 Apr 11 17:02 bak245
drwxr-xr-x 2 root  root        4096 Apr 11 17:01 dbact
drwxr-xr-x 2 root  root        4096 Apr 11 17:02 dbslave
-rw-r--r-- 1 root  root  1411383296 Apr 11 17:02 ibdata1
drwxr-xr-x 2 root  root        4096 Apr 11 17:01 mysql
-rw-rw---- 1 mysql mysql          0 Apr 11 17:03 mysql-bin.index
drwxr-xr-x 2 root  root        4096 Apr 11 17:02 performance_schema
drwxr-xr-x 2 root  root       40960 Apr 11 17:02 qunle20
drwxr-xr-x 2 root  root        4096 Apr 11 17:01 study
drwxr-xr-x 2 root  root        4096 Apr 11 17:01 test
-rw-rw---- 1 mysql root         868 Apr 11 17:03 tmg-73.err
-rw-r--r-- 1 root  root          23 Apr 11 17:01 xtrabackup_binlog_pos_innodb
-rw-r--r-- 1 root  root          72 Apr 11 17:01 xtrabackup_slave_info
[root@tmg-73 mysql]# chown mysql:mysql * -R
重新修改所屬組,一切ok
--增量備份 
--1,指定備份根目錄
[root@tmg-73 mysql]# xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/home/mysql/data/temp/incr01/ --incremental-basedir=/home/mysql/data/temp/2013-04-11_17-39-33/
--在/home/mysql/data/temp/incr01將產生一些.delta資料檔案;
--恢復 (先恢復全量備份的日誌)
--用增量備份加入全量資料
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/home/mysql/data/temp/2013-04-11_17-39-33/
xtrabackup --target-dir=/home/mysql/data/temp/2013-04-11_17-39-33/ --prepare  --incremental-dir=/home/mysql/data/temp/incr01/
--應用日誌
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/home/mysql/data/temp/2013-04-11_17-39-33/

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23073818/viewspace-758306/,如需轉載,請註明出處,否則將追究法律責任。

相關文章