----1.编译安装percona-xtrabackup



yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr \

bison libtool ncurses-devel zlib-devel libgcrypt-devel


wget http://www.percona.com/downloads/XtraBackup/XtraBackup-2.1.9/source/percona-xtrabackup-2.1.9.tar.gz



tar xvzf percona-xtrabackup-2.1.9.tar.gz 


mkdir -p /usr/local/xtrabackup/



mv percona-xtrabackup-2.1.9 /usr/local/xtrabackup/




cd /usr/local/xtrabackup/percona-xtrabackup-2.1.9





AUTO_DOWNLOAD="yes" ./utils/build.sh innodb56 



/*****重新安装需要

rm -rf /usr/bin/innobackupex

rm -rf /usr/bin/xtrabackup


***********/



cp innobackupex /usr/bin/


cp src/xtrabackup_56  /usr/bin/




ln -s /usr/local/mysql/bin/* /usr/bin/




---2.安装相关插件


wget http://www.percona.com/downloads/percona-toolkit/LATEST/RPM/percona-toolkit-2.2.8-1.noarch.rpm


yum install perl-DBI

yum install perl-DBD-MySQL

yum install perl-Time-HiRes

yum install perl-IO-Socket-SSL


rpm -ivh percona-toolkit-2.2.8-1.noarch.rpm



*****************************************************************

普通备份和还原

*****************************************************************


----1.备份





create table t1

(

sid int not null ,

sname varchar(100)  not null

)engine=innodb charset=gbk  ; 





DELIMITER //

create PROCEDURE proc1()

BEGIN  

    DECLARE i int DEFAULT 0;

    set i=1 ;

set autocommit=0;  

WHILE i<=1000000 DO

INSERT INTO t1 values(i,'我');

set i=i+1; 

END WHILE; 

commit;

set autocommit=1;      

END  

//

DELIMITER ;


call proc1;


---2.备份数据


innobackupex  --user=root --password=password  --defaults-file=/usr/local/mysql/my.cnf \

--port=3306 /backup





---3.恢复数据


service mysql stop



mv /usr/local/mysql/data/innodb_data/  /wind/

cp -rvf innodb_data/  /wind/



----datadir数据目录和日志目录需要为空


rm -rf /usr/local/mysql/innodb_data/*

rm -rf /usr/local/mysql/data/*

rm -rf /usr/local/mysql/mysql_logs/innodb_log/*






----4.准备日志(默认使用内存100M)

 

innobackupex --ibbackup=xtrabackup_56    --user=root --password=password  --defaults-file=/usr/local/mysql/my.cnf  \

--apply-log  --use-memory=4G  /backup/2014-06-06_10-27-47



----5.还原数据库


innobackupex  --ibbackup=xtrabackup_56   --defaults-file=/usr/local/mysql/my.cnf   --copy-back /backup/2014-06-06_10-27-47




还原前数据文件和事务日志文件包括innodb的日志都需要删除.根据/et/my.cnf来确定MySQL的数据位置



---6.权限设置


chown -R mysql:mysql /usr/local/mysql/





service mysql start





*****************************************************************

增量备份和还原

*****************************************************************



----1.准备数据


create database wind;


use wind;





create table t1

(

sid int not null ,

sname varchar(100)  not null

)engine=innodb charset=gbk  ; 





DELIMITER //

create PROCEDURE proc1()

BEGIN  

    DECLARE i int DEFAULT 0;

    set i=1 ;

set autocommit=0;  

WHILE i<=1000000 DO

INSERT INTO t1 values(i,'我');

set i=i+1; 

END WHILE; 

commit;

set autocommit=1;      

END  

//

DELIMITER ;


call proc1;




---2.全备数据


mkdir -p /backup/full




innobackupex  --user=root --password=password  --defaults-file=/usr/local/mysql/my.cnf \

--port=3306 /backup/full






----3.改变数据


create table t2

(

sid int not null ,

sname varchar(100)  not null

)engine=innodb charset=gbk  ; 





DELIMITER //

create PROCEDURE proc2()

BEGIN  

    DECLARE i int DEFAULT 0;

    set i=1 ;

set autocommit=0;  

WHILE i<=2000000 DO

INSERT INTO t2 values(i,'今天是个好日子');

set i=i+1; 

END WHILE; 

commit;

set autocommit=1;      

END  

//

DELIMITER ;


call proc2;






----4.增量备份


mkdir -p /backup/incre




innobackupex  --use-memory=4G  --user=root --password=password  --defaults-file=/usr/local/mysql/my.cnf \

--port=3306  --incremental  /backup/incre   --incremental-basedir=/backup/full/2014-06-06_12-26-10       









---3.恢复数据


service mysql stop



mv /usr/local/mysql/data/innodb_data/  /wind/

cp -rvf innodb_data/  /wind/



----datadir数据目录和日志目录需要为空


rm -rf /usr/local/mysql/innodb_data/*

rm -rf /usr/local/mysql/data/*

rm -rf /usr/local/mysql/mysql_logs/innodb_log/*






----4.准备日志(默认使用内存100M)


---4.1 Prepare完整备份集


/*语法:  innobackupex --apply-log --redo-only BASE-DIR  */


 

innobackupex --ibbackup=xtrabackup_56    --user=root --password=password  --defaults-file=/usr/local/mysql/my.cnf  \

--apply-log --redo-only   /backup/full/2014-06-06_12-26-10  --use-memory=4G 



---4.2 Prepare增量备份集


/*语法:innobackupex --apply-log --redo-only BASE-DIR --incremental-dir= */


innobackupex --ibbackup=xtrabackup_56    --user=root --password=password  --defaults-file=/usr/local/mysql/my.cnf  \

--apply-log --redo-only   /backup/full/2014-06-06_12-26-10  --incremental-dir=/backup/incre/2014-06-06_12-38-16 \

--use-memory=4G    




---4.3再次prepare全备集,回滚那些未提交的事务

/*语法: innobackupex --apply-log BASE-DIR */


innobackupex --ibbackup=xtrabackup_56    --user=root --password=password  --defaults-file=/usr/local/mysql/my.cnf  \

--apply-log    /backup/full/2014-06-06_12-26-10  --use-memory=4G 





----5.还原数据库


innobackupex  --ibbackup=xtrabackup_56   --defaults-file=/usr/local/mysql/my.cnf \

--copy-back /backup/full/2014-06-06_12-26-10 




还原前数据文件和事务日志文件包括innodb的日志都需要删除.根据/et/my.cnf来确定MySQL的数据位置



---6.权限设置


chown -R mysql:mysql /usr/local/mysql/




---7.启动mysql


service mysql start