MySQL的xtrabackup備份

##################################################################################
######  
######恢復數據庫的時候,需要將備份的日誌應用備份的文件中去,讓後才能進行恢復
######備份:innobackupex --user=root --password=banma --defaults-file=/etc/my.cnf  --database=testinnodb  /tmp/data/

######恢復2步驟 innobackupex --user=root --password=banma --apply-log /tmp/data/2013-08-23_16-09-10/
[root@localhost 2013-08-23_16-09-10]# rsync -avz testinnodb ib* /usr/local/mysql_data/data/
		chown -R mysql:mysql /usr/local/mysql_data/data/
######
######
######
######
##################################################################################



一、安裝部署和過程
1.下載安裝
wget http://www.percona.com/redir/downloads/XtraBackup/XtraBackup-1.6.7/binary/Linux/x86_64/xtrabackup-1.6.7.tar.gz 
2.安裝需要的庫
yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr   bison libtool ncurses-devel zlib-devel
3、解壓
tar zxvf xtrabackup-1.6.7.tar.gz  
4、進入目錄
cd xtrabackup-1.6.7 
5、複製
cd bin  
cp * /usr/bin  
然後就安裝完成了,下面開始備份  

注意:文件解釋
innobackupex是我們要使用的備份工具;
xtrabackup是被封裝在innobackupex之中的,innobackupex運行時需要調用它;
xtrabackup_51是xtrabackup運行時需要調用的工具;
tar4ibd是以tar流的形式產生備份時用來打包的工具。


二、備份和恢復

6、對某個數據庫進行全部備份的命令介紹
innobackupex --user=root --password=123456 --defaults-file=/etc/mysql/my.cnf --database=test --stream=tar /tmp/data/ 2>/tmp/data/info.log|gzip 1>/tmp/data/test.tar.gz 
說明:
      --database=test 單獨對test數據庫做備份 ,若是不添加此參數那就那就是對全庫做備份
      2>/tmp/data/info.log 輸出信息寫入日誌中
      1>/tmp/data/test.tar.gz 打包壓縮存儲到該文件中

 (
	 mysql> create table test (id int);  
	Query OK, 0 rows affected (0.06 sec)  
	mysql> insert into test values(1);  
	Query OK, 1 row affected (0.04 sec) 
 )

 7、恢復數據庫
 (1)創建一個文件夾
 mkdir /tmp/restore
 cd /tmp/data
 tar -izxvf test.tar.gz -C /tmp/restore

[root@localhost data]# ll /tmp/restore/
總用量 131096
-rw-r--r-- 1 root  root        263  8月 23 14:38 backup-my.cnf
-rw-rw---- 1 mysql mysql 134217728  8月 23 14:22 ibdata1
drwxr-xr-x 2 root  root       4096  8月 23 14:53 test
-rw-r--r-- 1 root  root         13  8月 23 14:38 xtrabackup_binary
-rw-r--r-- 1 root  root         21  8月 23 14:38 xtrabackup_binlog_info
-rw-r--r-- 1 root  root         73  8月 23 14:38 xtrabackup_checkpoints
-rw-r--r-- 1 root  root       2560  8月 23 14:38 xtrabackup_logfile
(2)開始應用日誌(將備份文件中的日誌,應用到備份文件中的數據文件上,
--apply-log指明是將日誌應用到數據文件上,完成之後將備份文件中的數據恢復到數據庫中)
[root@localhost restore]# innobackupex --user=root --password=banma --apply-log /tmp/restore/ 
[root@localhost restore]# ll
總用量 526356
-rw-r--r-- 1 root  root        263  8月 23 14:38 backup-my.cnf
-rw-rw---- 1 mysql mysql 134217728  8月 23 14:59 ibdata1
-rw-r--r-- 1 root  root  134217728  8月 23 14:59 ib_logfile0
-rw-r--r-- 1 root  root  134217728  8月 23 14:59 ib_logfile1
-rw-r--r-- 1 root  root  134217728  8月 23 14:59 ib_logfile2
drwxr-xr-x 2 root  root       4096  8月 23 14:53 test
-rw-r--r-- 1 root  root         13  8月 23 14:38 xtrabackup_binary
-rw-r--r-- 1 root  root         21  8月 23 14:38 xtrabackup_binlog_info
-rw-r--r-- 1 root  root         73  8月 23 14:59 xtrabackup_checkpoints
-rw-r--r-- 1 root  root    2097152  8月 23 14:59 xtrabackup_logfile
(3)恢復正式開始
然後把test目錄複製到/usr/local/mysql_data/data目錄
[root@localhost restore]# rsync -avz test ib* /usr/local/mysql_data/data
sending incremental file list
ib_logfile0
ib_logfile1
ib_logfile2
ibdata1
test/
test/test.MYD
test/test.MYI
test/test.frm

sent 529692 bytes  received 149 bytes  13762.10 bytes/sec
total size is 536880534  speedup is 1013.29
[root@localhost restore]#chown -R mysql:mysql /usr/local/mysql_data/data

三、增量備份和恢復
(1)先添加幾條數據
insert into test values(10);
insert into test values(11);
insert into test values(12);
insert into test values(13);
insert into test values(14);
insert into test values(15);
(2)增量備份
[root@localhost data]# innobackupex --user=root --password=banma --database=test --incremental --incremental-basedir=/tmp/restore/ /tmp/data
其中,--incremental指明是增量備份,--incremental-basedir指定上次完整備份或者增量備份文件的位置。
這裏的增量備份其實只針對的是InnoDB,對於MyISAM來說,還是完整備份。
在進行增量備份的恢復之前,先關閉數據庫,然後刪除數據庫test



(3)增量備份的恢復
[root@localhost data]# innobackupex -user=root --password=banma --defaults-file=/etc/my.cnf --apply-log /tmp/restore/ --incremental-dir=/tmp/data/2013-08-23_15-22-54/
然後再進入恢復的目錄/tmp/data
[root@localhost 2013-08-23_15-22-54]# ll
總用量 172
-rw-r--r-- 1 root root    263  8月 23 15:22 backup-my.cnf
-rw-r--r-- 1 root root 147456  8月 23 15:22 ibdata1.delta
-rw-r--r-- 1 root root     18  8月 23 15:22 ibdata1.meta
drwxr-xr-x 2 root root   4096  8月 23 15:23 test
-rw-r--r-- 1 root root     13  8月 23 15:23 xtrabackup_binary
-rw-r--r-- 1 root root     21  8月 23 15:23 xtrabackup_binlog_info
-rw-r--r-- 1 root root     75  8月 23 15:23 xtrabackup_checkpoints
-rw-r--r-- 1 root root   2560  8月 23 15:23 xtrabackup_logfile

[root@localhost 2013-08-23_15-22-54]# rsync -avz test ib* /usr/local/mysql_data/data/


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