参考:

http://blog.csdn.net/justdb/article/details/17054579# MySQL备份与恢复之percona-xtrabackup软件的使用

http://blog.csdn.net/justdb/article/details/17054667# MySQL备份与恢复之percona-xtrabackup实现增量备份及恢复

http://devliangel.blog.51cto.com/469347/1374232# 使用innobackupex在线增量备份及恢复mysql数据库

http://www.percona.com/doc/percona-xtrabackup/2.2/# 官方使用手册文档

http://blog.chinaunix.net/uid-20785090-id-4212816.html# xtraBackup备份原理剖析 

http://blog.csdn.net/tianlesoftware/article/details/7028733 # MySQL 数据文件 说明


xtrabackup 备份恢复测试过程


1、安装

cd /data/soft

wget http://www.percona.com/redir/downloads/XtraBackup/LATEST/binary/redhat/6/x86_64/percona-xtrabackup-2.2.6-5042.el6.x86_64.rpm


yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL


rpm -ivh percona-xtrabackup-2.2.6-5042.el6.x86_64.rpm


2、完全备份及恢复


# mysql备份用户授权

mysql> grant select,show view,Replication client,SUPER,RELOAD  on *.* to 'backup'@'127.0.0.1' identified by 'passwd';flush privileges;


完全备份

innobackupex --host=127.0.0.1  --port=3306 --user=backup --password='passwd' --no-lock --defaults-file=/usr/local/services/mysql/etc/my.cnf --parallel=4   /data/backup     


完全恢复

#检查及准备备份完的数据 --use-memory 参数默认100M, 表示可以给innobackupex使用的内存,越多越好

innobackupex --parallel=4 --use-memory=1G --apply-log  /data/backup/2014-11-18_15-52-40

#恢复

innobackupex  --defaults-file=/usr/local/services/mysql/etc/my.cnf   --parallel=4 --copy-back  /data/backup/2014-11-18_15-52-40

chown mysql:mysql /data/mysql_data -R

service mysql start


3、增量备份及恢复


#针对已经备份的目录进行增量备份

innobackupex --host=127.0.0.1  --port=3306 --user=backup --password='passwd' --no-lock --defaults-file=/usr/local/services/mysql/etc/my.cnf  --incremental /data/backup/ --incremental-dir /data/backup/2014-11-18_15-52-40

#再次插入数据

# 再次增量备份

innobackupex --host=127.0.0.1  --port=3306 --user=backup --password='passwd' --no-lock --defaults-file=/usr/local/services/mysql/etc/my.cnf  --incremental /data/backup/ --incremental-dir /data/backup/2014-11-18_18-11-35

#再次插入数据

# 再次增量备份

innobackupex --host=127.0.0.1  --port=3306  --user=backup --password='passwd' --no-lock --defaults-file=/usr/local/services/mysql/etc/my.cnf  --incremental /data/backup/ --incremental-dir /data/backup/2014-11-18_18-14-56


#模拟数据丢失

service mysql stop

rm -rf /data/mysql_data/*


#三次增量备份数据合并到全备份中去

innobackupex  --apply-log --redo-only --incremental /data/backup/2014-11-18_15-52-40 --incremental-dir /data/backup/2014-11-18_18-11-35

innobackupex  --apply-log --redo-only --incremental /data/backup/2014-11-18_15-52-40 --incremental-dir /data/backup/2014-11-18_18-14-56

innobackupex  --apply-log --redo-only --incremental /data/backup/2014-11-18_15-52-40 --incremental-dir /data/backup/2014-11-18_18-17-07


#恢复整合后的全备数据

#检查及准备备份完的数据

innobackupex --parallel=4 --use-memory=1G --apply-log  /data/backup/2014-11-18_15-52-40

#恢复

innobackupex   --defaults-file=/usr/local/services/mysql/etc/my.cnf   --parallel=4 --copy-back  /data/backup/2014-11-18_15-52-40

chown mysql:mysql /data/mysql_data -R

service mysql start


4、单数据库备份及恢复


#指定数据库备份

innobackupex --host=127.0.0.1  --port=3306  --user=backup --password='passwd' --no-lock --defaults-file=/usr/local/services/mysql/etc/my.cnf --parallel=4  --databases='test_backup5'  /data/backup     



#模拟表数据丢失

mysql > drop test_backup5 MyClass;

mysql > create table MyClass(  id int(4) not null primary key auto_increment,   name char(20) not null,  sex int(4) not null default '0',   degree double(16,2));

ALTER TABL