innobackupex 备份 Xtrabackup 增量备份

时间:2022-11-02 18:13:11

Mysql增量备份
Xtrabackup中包含两个工具:
•        xtrabackup - 用于热备份innodb, xtradb表的工具,不能备份其他表(MYISAM表)。
•        innobackupex - 对xtrabackup封装的perl脚本,提供了myisam表备份的能力。(能进行整库和数据表备份)。
*注:备份恢复之前请做好全库备份
安装Xtrabackup
官网网址http://www.percona.com/doc/percona-xtrabackup/index.html
安装
配置文件中需要添加 datadir = /usr/local/mysql/datadir  //MYSQL数据文件目录
1、自动安装 YUM 源后,用YUM安装

  1. yum install -y gnupg
  2. rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm
  3. yum install -y percona-xtrabackup

2、手动写入YUM源
新建文件 /etc/yum.repos.d/Percona.repo

  1. [percona]
  2. name = CentOS $releasever - Percona
  3. baseurl=http://repo.percona.com/centos/$releasever/os/$basearch/
  4. enabled = 1
  5. gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona
  6. gpgcheck = 1

之后YUM安装 ,安装后可执行xtrabackup -v 查看
之后可以用xtrabackup 备份

一、innobackupex 备份全库
备份主程序为 /usr/bin/innobackupex-1.5.1,其需要从 mysql 配置文件中读取相关信息,Mysql缺省配置文件 my.cnf 中未配置 datadir 选项,必须显性添加,否则备份程序会报错:

innobackupex:: Warning: Ignored unrecognized line 2 in options : 'xtrabackup: Error: Please set parameter 'datadir'
在论坛Mysql 配置文件 /etc/my.cnf 配置文件添加 datadir 内容:

在[mysqld]段加入

  1. datadir = /usr/local/mysql/var

1、备份

  1. #/usr/bin/innobackupex-1.5.1 --user=root --password=password --defaults-file=/etc/my.cnf /usr/local/bbsBackup

2、恢复

  1. #/usr/bin/innobackupex-1.5.1 --apply-log  /usr/local/bbsBackup/2011-09-26_02-00-01/
  2. #/usr/bin/innobackupex-1.5.1 --copy-back /usr/local/bbsBackup/2011-09-26_02-00-01/
  3. #chown -R mysql:mysql /usr/local/mysql/
  4. #/etc/init.d/mysqld start

二、全量备份及恢复
备份
注:使用xtrabackup,仅限InnoDB和xtradb表,且注意mysql配置文件my.cnf中需设置“default_table_type = InnoDB”否则不成功

  1. #/usr/bin/xtrabackup --defaults-file=/etc/my.cnf --backup  --target-dir=/usr/local/bbsBackup/base/

恢复时执行两次:
1、

  1. #/usr/bin/xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/usr/local/bbsBackup/base
  2. #/usr/bin/xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/usr/local/bbsBackup/base

2、

  1. //将数据库停掉
  2. #/etc/init.d/mysqld stop
  3. //删除数据库目录下的ib*(ib开头的所有)文件。
  4. #rm  /usr/local/mysql/var/ib*
  5. //将/usr/local/bbsBackup/base目录下的ib*文件拷贝到数据库目录。
  6. #cd /usr/local/mysql/var/
  7. #cp /usr/local/bbsBackup/base/ib* ./

3、设置权限:

  1. #chown mysql:mysql ib*

重启数据库后测试,是否成功。

三、增量备份及恢复
注:做增量前当然要先进行全量备份,在全量的基础上来进行增量。
首先进行全量备份。

  1. #/usr/bin/xtrabackup --defaults-file=/etc/my.cnf --backup  --target-dir=/usr/local/bbsBackup/base/

在全量备份的基础上进行增量。

  1. #/usr/bin/xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/usr/local/bbsBackup/1 --incremental-basedir=/usr/local/bbsBackup/base/

注:/usr/local/bbsBackup/1是每次都需修改的。比如第二次增量就改成/usr/local/bbsBackup/2增量恢复。(步骤同全量恢复,只是在执行恢复命令的时候中间多一步)
1、

  1. #/usr/bin/xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/usr/local/bbsBackup/base
  2. #/usr/bin/xtrabackup --target-dir=/usr/local/bbsBackup/base  --prepare --incremental-dir=/usr/local/bbsBackup/1
  3. #/usr/bin/xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/usr/local/bbsBackup/base

2、

  1. //将数据库停掉
  2. #/etc/init.d/mysqld stop
  3. //删除数据库目录下的ib*(ib开头的所有)文件。
  4. #rm  /usr/local/mysql/var/ib*
  5. //将/usr/local/bbsBackup/base目录下的ib*文件拷贝到数据库目录。
  6. #cd /usr/local/mysql/var/
  7. #cp /usr/local/bbsBackup/base/ib* ./

3、设置权限:

  1. #chown mysql:mysql ib*

重启数据库后测试,是否成功。

参考自:http://xikder.blog.51cto.com/blog/1423200/309339