日期:2014-05-16  浏览次数:20658 次

MySQL Xtrabackup备份和恢复
   Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。Xtrabackup有两个主要的工具:xtrabackup、innobackupex,其中xtrabackup只能备份InnoDB和XtraDB两种数据表,innobackupex则封装了xtrabackup,同时可以备份MyISAM数据表。

1.安装mysql http://instance.iteye.com/blog/1454027

2.安装Xtrabackup ,下载Xtrabackup

  配置源
    #vi /etc/yum.repos.d/percona.repo
   
[percona]
name = CentOS $releasever - Percona
baseurl=http://repo.percona.com/centos/$releasever/os/$basearch/
enabled = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona
gpgcheck = 1
    


   添加key

   #cd  /etc/pki/rpm-gpg

   #wget http://www.percona.com/downloads/RPM-GPG-KEY-percona

   安装Xtrabackup

   yum install xtrabackup

 
备份及恢复
 
一. 整库备份及恢复

①备份

#innobackupex-1.5.1 --user=root --password=1234 --defaults-file=/etc/my.cnf   /var/backups


②恢复

a. 停止 MySQL 服务:# /etc/init.d/mysqld stop 


b. #innobackupex-1.5.1 --apply-log --defaults-file=/etc/my.cnf  /var/backups/2012-03-20_19-30-04
   # innobackupex-1.5.1 --copy-back --defaults-file=/etc/my.cnf /var/backups/2012-03-20_19-30-04


   使用cd或者ls 命令看看你的数据库目录下是不是有文件了?
   修改数据库文件权限,否则无法启动。(这步我是cd到原数据库目录下进行的)
   #chown -R mysql:mysql *
   重启数据库,看恢复是否成功。

二.全量备份及恢复

   使用xtrabackup,仅限InnoDB和xtradb表,且注意mysql配置文件my.cnf中“default_table_type = InnoDB”否则不成功

①备份
   
#xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/var/backups/base/ 


②恢复
    执行两次:
   
#xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/var/backups/base 
#xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/var/backups/base 


    因为第二次prepare会帮助我们生成redo log文件,从而加快MySQL数据库启动的速度。
  
    将数据库停掉,删除数据库下的ib*(ib开头的所有)文件。将/var/backups/base目录下的ib*文件拷贝到数据库目录。

    #chown mysql:mysql ib*
   重启数据库,看恢复是否成功。

三.增量备份及恢复

    xtrabackup做增量仅限InnoDB和xtradb表,且注意mysql配置文件my.cnf中“default_table_type= InnoDB”否则不成功
  
    做增量前当然要先进行全量备份,在全量的基础上来进行增量

    首先进行全量备份

   
# xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/var/backups/base/

  
    在全量备份的基础上进行增量
   
   
# xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/var/backups/1/ -- incremental-basedir=/var/backups/base 

  
    xtrabackup --defaults-file=配置文件 --target-dir=全量备份存储目录 --incremental-basedir=增量存储目录 --backup

    注:/var/backups/1/是每次都需修改的。比如第二次增量就改成/var/backups/2


    增量恢复。(步骤同全量恢复,只是在执行恢复命令的时候中间多一步)
   
    
# xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/var/backups/base 
# xtrabackup --target-dir=/backups/base --prepare --incremental-dir=/var/backups/1 
# xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/var/backups/base 


     将数据库停掉,删除数据库下的ib*文件。将/var/backups/base目录下的ib*文件拷贝到数据库目录。

    #chown mysql:mysql ib*
   重启数