Xtrabackup是由percona开发的一个开源软件,它是innodb热备工具ibbackup(收费的商业软件)的一个开源替代品。Xtrabackup由个部分组成:xtrabackup和innobackupex,其中xtrabackup工具用于备份innodb和 xtraDB引擎的表;而innobackupex工具用于备份myisam和innodb引擎的表,本文将介绍如何用innobackupex工具做全量和增量备份。

一、安装

    在安装Xtrabackup之前已经安装了mysql数据库,选用的Xtrabackup版本是2.2.9,如果想用其他的版本,请参考:https://www.percona.com/downloads/XtraBackup。

为了方便,直接使用yum进行安装:

yum install https://www.percona.com/downloads/XtraBackup/XtraBackup-2.2.9/binary/redhat/6/x86_64/percona-xtrabackup-2.2.9-5067.el6.x86_64.rpm

二、数据库的全备与还原

    innobackupex --defaults-file=/u01/app/mysql/my.cnf --user=root --password=***   --port=3306 --socket=/u01/app/mysql/run/mysql.sock /u01/app/mysql/backup/

还原:

关闭数据库:

innobackupex --defaults-file=/u01/app/mysql/my.cnf --user=root --password=*** --use-memory=100m --apply-log /u01/app/mysql/backup/2016-11-10_14-16-50

innobackupex --defaults-file=/u01/app/mysql/my.cnf --user=root --password=***  --copy-back /u01/app/mysql/backup/2016-11-10_14-16-50

#应用binlog日志

[root@mysql 2016-11-10_14-16-50]# cat xtrabackup_binlog_info

mysql-bin.000012 311

mysqlbinglog /u01/app/mysql/log/mysql-bin.000012 --start-position=311 |mysql -u root -p***

修改权限

cd /u01/app/mysql/data

chown -R mysql:dba

启动数据库

/etc/init.d/mysql start

三、增量备份与还原

--增量备份

create table t_time(id int auto_increment primary key,t_time datetime);

insert into t_time(t_time) values(now());

--先做全备

innobackupex --defaults-file=/u01/app/mysql/my.cnf --user=root --password=***   --port=3306 --socket=/u01/app/mysql/run/mysql.sock /u01/app/mysql/backup/

--再做增量备份

innobackupex --defaults-file=/u01/app/mysql/my.cnf  --user=root --password=*** --incremental-basedir=/u01/app/mysql/backup/2016-11-10_14-46-43 --incremental /u01/app/mysql/backup/

--增量恢复的步骤

innobackupex --apply-log --redo-only /u01/app/mysql/backup/2016-11-10_14-46-43

innobackupex --apply-log --redo-only /u01/app/mysql/backup/2016-11-10_14-46-43 --incremental-dir=/u01/app/mysql/backup/2016-11-10_14-49-09

--应用备份

innobackupex --defaults-file=/u01/app/mysql/my.cnf --user=root --password=*** --use-memory=100m --apply-log /u01/app/mysql/backup/2016-11-10_14-46-43

innobackupex --defaults-file=/u01/app/mysql/my.cnf --user=root --password=*** --copy-back /u01/app/mysql/backup/2016-11-10_14-46-43

mysqlbinglog /u01/app/mysql/log/mysql-bin.000014 --start-position=482 |mysql -u root -p***