xtrabackup安装及全备,增量备份,及恢复

xtrabackup特性:
        一、支持热备份
        二、支持对InnoDB、MyISAM,xtradb存储引擎的备份
        三、备份过程快速、可靠
        四、备份过程不会打断正在执行的事务
        五、可以基于压缩等功能节约磁盘空间和流量
        六、自动实现备份检验
        七、还原速度快html

(一)安装:mysql

官网:https://www.percona.com/doc/percona-xtrabackup/LATEST/installation/yum_repo.htmlsql

ubuntu:数据库

wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.debubuntu

dpkg -i percona-release_0.1-4.$(lsb_release -sc)_all.debcentos

apt-get update服务器

apt-get install percona-xtrabackup-24app

centos:spa

yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpmhtm

yum install percona-xtrabackup-24

(二)备份:

1彻底备份

# innobackupex --user=<用户名> --password=<密码> /path/to/backup


使用innobackupex备份时,其会调用xtrbackup备份全部的InnoDB表(*.frm, *.ibd),复制全部关于表结构定义的相关文件、以及MyISAM(*.MYD,*.MYI,*.frm),MERGE, CSV和ARCHIVE表的相关文件,同时还会备份触发器和数据库配置信息相关的文件。这些文件会被保存至一个以时间命名的目录中


在使用innobackupex进行备份时,还能够使用--no-timestamp选项来阻止命令自动建立一个以时间命名的目录;如此一来,innobackupex命令将会建立一个BACKUP-DIR目录来存储备份数据。

二、准备(prepare)一个彻底备份

通常状况下,在备份完成后,数据尚且不能用于恢复操做,由于备份的数据中可能会包含还没有提交的事务或已经提交但还没有同步到数据文件中的事务。所以,此时数据文件仍处于不一致状态。准备的主要做用正是经过回滚未提交的事务及同步已经提交的事务到数据文件也使得数据文件处于一致状态。

innobackupex命令的--apply-log选项可用于实现此功能。以下面的命令:

# innobackupex --apply-log <彻底备份的目录名称>


准备完成后,最后几行会出现如下几行信息:
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
160303 11:25:31 InnoDB: Starting shutdown...
160303 11:25:36 InnoDB: Shutdown completed; log sequence number 0 1617932
160303 11:25:36 innobackupex: completed OK!


在实现"准备"的过程当中,innobackupex一般还能够使用--use-memory选项来指定其能够使用的内存的大小,默认一般为100M。若是有足够的内存可用,能够多划分一些内存给Pprepare的过程,以提升其完成速度。


三、从一个彻底备份中恢复数据

innobackupex命令的--copy-back选项用于执行恢复操做,其经过复制全部数据相关的文件到mysql服务器的DATADIR目录中来执行恢复过程。innobackupex经过backup-my.cnf来获取DATADIR目录的相关信息。

# innobackupex --defaults-file=/etc/my.cnf --copy-back <彻底备份目录>

注意,在实现恢复时,须要关闭MySQL,而且删除/mydata/data下的全部东西

若是执行成功,其输出信息的最后几行一般以下:
innobackupex: Starting to copy InnoDB log files
innobackupex: in '/backup/2016-03-03_11-21-31'
innobackupex: back to original InnoDB log directory '/mydata/data'
innobackupex: Finished copying back files.

160303 11:38:02 innobackupex: completed OK!

确保如上信息的最后一行出现"innobackupex: completed ok!"

当数据恢复到数据目录后,还须要确保全部数据文件的所属均为正确的用户,如mysql;不然,在启动mysqld前还须要事先修改数据文件的所属

# chown -R mysql.mysql /mydata/data

四、使用innobackupex进行增量备份

要实现第一次增量备份,能够使用下面的命令:

# innobackupex --incremental /backup --incremental-basedir=<彻底备份目录>

其中,BASEDIR指的是彻底备份所在的目录,此命令执行结束后,innobackupex命令会在/backup目录中建立一个以新的时间命名的目录及存放全部的增量备份数据。另外,在执行过增量备份后再一次进行增量备份时,其--incremental-basedir应该指向上一次增量备份所在的目录

须要注意的是,增量备份仅能应用于InnoDB或xtrDB表,对于MyISAM表而言,执行增量备份其实进行的是彻底备份。

准备增量备份与准备彻底备份有着一些不一样,尤为要注意的是:
1)须要在每一个备份(包括彻底和增量备份上),将已经提交的事务进行重放。重放后,全部的备份数据将合并到彻底备份上
2)基于全部的备份将未提交的事务进行回滚

因而,操做就变成了:
# innobackupex --apply-log --redo-only BASEDIR

接着执行:
# innobackupex --apply-log --redo-only BASEDIR --incremental-dir=INCREMENTAL-DIR-1

然后是第二个增量备份:
# innobackupex --apply-log --redo-only BASEDIR --incremental-dir=INCREMENTAL-DIR-2

恢复时,直接使用第1次的彻底备份便可

相关文章
相关标签/搜索