xtrabackup是基于InnoDB存储引擎灾难恢复的。它复制InnoDB的数据文件,尽管数据文件在内部是非一致性的,但在执行灾难恢复时可以保证这些数据文件是一致的,并且可用。

         xtrabackup是一款强大的在线热备份工具,备份过程中不锁库表,适合生产环境,并且由专业组织Percona提供(改进MySQL分支),主要包含两个组件 xtrabackup:C程序,支持InnoDB/XtraDB和innobackupex:以per脚本xtrabackup,还支持MyISAM.

      使用XtraBackup备份工具实现完整备份、恢复和增量备份、恢复
     * 备份数据时不锁表
     * 只备份表记录,不备份表结构。
     * 只能备份innodb   和   xtradb 存储引擎的表
     innodb  支持事务和事务回滚

          操作系统和使用的软件

        操作系统:  Red Hat Enterprise Linux Server release 6.5

        备份软件:percona-xtrabackup-2.1.6-702.rhel6.x86_64.rpm
        实验要求:使用XtraBackup备份工具实现完整备份、恢复和增量备份、恢复

       实验的命令和选项有哪些?

       xtrabackup_56   选项
       --target-dir=目录名     指定备份文件存放的目录
       --backup                      备份数据
       --datadir=/var/lib/mysql       指定数据库目录的位置
       --prepare  准备恢复数据
       --incremental-basedir=目录名   增量备份时,指定参照的完整备份路径
       --incremental-dir=目录名     准备恢复目录时,指定增量备份的路径

1.安装软件包:

     [root@fanxh ~]# rpm -ivh percona-xtrabackup-                             2.1.6-702.rhel6.x86_64.rpm

    error: Failed dependencies:
    perl(DBD::mysql) is needed by percona-xtrabackup-2.1.6-702.rhel6.x86_64
    perl(Time::HiRes) is needed by percona-xtrbackup-2.1.6-702.rhel6.x86_64(安装的时候发现有依赖关系所以用YUM进行安装所需要的软件)

    [root@fanxh ~]#  yum -y install perl-Time-HiRes perl-DBD-MySQL  (YUM安装依赖的软件包)

    

     [root@fanxh ~]# rpm -ivh percona-xtrabackup-2.1.6-702.rhel6.x86_6  


    [root@fanxh ~]# rpm -ql percona-xtrabackup     (查看安装的清单)                     

         /usr/bin/innobackupex
        /usr/bin/innobackupex-1.5.1
        /usr/bin/xbcrypt
        /usr/bin/xbstream
       /usr/bin/xtrabackup
       /usr/bin/xtrabackup_55
       /usr/bin/xtrabackup_56

       /usr/share/doc/percona-xtrabackup-2.1.6
      /usr/share/doc/percona-xtrabackup-2.1.6/COPYING

 2.完整备份和完整恢复

     完整备份的配置:做完整备份是首先创建一个文件夹用来指定备份文件存放的目录。

     [root@fanxh ~]# mkdir /fanxhdir
     [root@fanxh ~]# xtrabackup_56 --backup --datadir=/var/lib/mysql/ --target-     dir=/fanxhdir/                  (备份完成)
    

    完整恢复数据的配置:

    [root@fanxh ~]#xtrabackup_56  --prepare  --datadir=/var/lib/mysql  --target-dir=/fanxhdir
    [root@fanxh ~]#cp  /fanxhdir/数据库/文件  /var/lib/mysql/数据库/
    [root@fanxh ~]# service  mysql  restart

 3.增量备份和增量恢复    

    

    增量备份的配置:* 事先要有一次完整备份,这样在增量备份时,才会知道那些数据是新的。

   [root@fanxh ~]# mkdir -p /bakup/one(完整备份)

    [root@fanxh ~]# xtrabackup_56   --backup   --datadir=/var/lib/mysql   --target-dir=/bakup/one   
 

    [root@fanxh ~]# mkdir -p /bakup/two  (增量备份)

   [root@fanxh ~]# xtrabackup_56   --backup   --datadir=/var/lib/mysql    --target-dir=/bakup/two  --incremental-basedir=/bakup/one

    [root@fanxh ~]# mkdir -p /bakup/three(增量备份)

   [root@fanxh ~]# xtrabackup_56   --backup   --datadir=/var/lib/mysql    --target-dir=/bakup/three  --incremental-basedir=/bakup/two

   增量恢复的配置:


    [root@fanxh ~]#xtrabackup_56  --prepare  --datadir=/var/lib/mysql  --target-dir=/bakup/one (完整恢复)

   [root@fanxh ~]#xtrabackup_56  --prepare  --datadir=/var/lib/mysql  --target-dir=/bakup/one    --incremental-dir=/bakup/two   (增量恢复)

   [root@fanxh ~]#xtrabackup_56  --prepare  --datadir=/var/lib/mysql  --target-dir=/bakup/one    --incremental-dir=/bakup/three  (增量恢复)

   [root@fanxh ~]#cp /bakup/one/数据库/文件   /var/lib/mysql/数据库/


    [root@fanxh ~]# service   mysql  restart