mysql5.6使用xtrabackup全备及增量备份51CTO博客 - 千亿集团

mysql5.6使用xtrabackup全备及增量备份51CTO博客

2019年03月01日14时53分49秒 | 作者: 代萱 | 标签: 备份,增量,全备 | 浏览: 2112

1.xtrabackup装置

2.全备及康复

(1)全备

查看数据库

[root@local-db opt]# innobackupex defaults-file=/etc/my.cnf  user=root password=123456 /bak/mysql/

该句子将复制数据文件(由my.cnf里的变量datadir指定)至备份目录下(/bak/mysql/),留意:假如不指定defaults-file,默认值为/etc/my.cnf。

备份成功后,将在备份目录下创立一个时间戳目录(本例创立的目录为/bak/mysql/2015-07-08_18-52-43),在该目录下寄存备份文件。

(2)康复

删去数据库test123,测验康复

康复之前,要先封闭数据库,而且删去数据文件和日志文件。

[root@local-db opt]# innobackupex defaults-file=/etc/my.cnf user=root password=123456 apply-log /bak/mysql/2015-07-08_18-52-43/

[root@local-db opt]# innobackupex defaults-file=/etc/my.cnf user=root password=123456  copy-back /bak/mysql/2015-07-08_18-52-43/

康复分为两个过程:

第1步是apply-log,为了加快速度,一般主张设置use-memory,这个过程完结之后,目录/bak/mysql/2015-07-08_18-52-43/下的备份文件现已准备就绪。

第2步是copy-back,即把备份文件复制至原数据目录下。康复完结之后,一定要记住查看数据目录的一切者和权限是否正确。


3.增量备份及康复

留意:innobackupex 增量备份仅针对InnoDB这类支撑业务的引擎,关于MyISAM等引擎,则仍然是全备。

(1)增量备份

增量备份需求根据全备,咱们现已有了一个全备(/bak/mysql/2015-07-08_18-52-43/),咱们需求在该全备的基础上做增量备份。

测验新建库,导入新数据,做增量备份。

[root@local-db mysql]# innobackupex defaults-file=/etc/my.cnf  user=root password=123456 incremental-basedir=/bak/mysql/2015-07-08_18-52-43/ incremental /bak/mysql/ 

其间incremental-basedir指向全备目录,incremental指向增量备份的目录。

上面句子履行成功之后,会在incremental履行的目录下创立一个时间戳子目录(本例中为:/bak/mysql/2015-07-08_19-46-30),在该目录下寄存着增量备份的一切文件。

在备份目录下,有一个文件xtrabackup_checkpoints记录着备份信息,全备的信息如下:

根据该全备的增量备份的信息如下:

从上面能够看出,增量备份的from_lsn正好等于全备的to_lsn。

那么,咱们是否能够在增量备份的基础上再做增量备份呢?答案是必定的,只要把incremental-basedir履行上一次增量备份的目录即可,如下所示:

[root@local-db mysql]# innobackupex defaults-file=/etc/my.cnf  user=root password=123456 incremental-basedir=/bak/mysql/2015-07-08_19-46-30/ incremental /bak/mysql/

它的xtrabackup_checkpoints记录着备份信息如下:

能够看到,该增量备份的from_lsn是从上一次增量备份的to_lsn开端的。

(2)康复

删去数据库test456,测验康复

康复之前,要先封闭数据库,而且删去数据文件和日志文件。

增量备份的康复比全备要杂乱许多,第一步是在一切备份目录下重做已提交的日志,如:

[root@local-db mysql]# innobackupex defaults-file=/etc/my.cnf  user=root password=123456  apply-log redo-only /bak/mysql/2015-07-08_18-52-43/

[root@local-db mysql]# innobackupex defaults-file=/etc/my.cnf  user=root password=123456  apply-log redo-only /bak/mysql/2015-07-08_18-52-43/ incremental-dir=/bak/mysql/2015-07-08_19-46-30/

[root@local-db mysql]# innobackupex defaults-file=/etc/my.cnf  user=root password=123456  apply-log redo-only /bak/mysql/2015-07-08_18-52-43/ incremental-dir=/bak/mysql/2015-07-08_21-01-19/

其间/bak/mysql/2015-07-08_18-52-43/是指全备目录,/bak/mysql/2015-07-08_19-46-30/是指第一次的增量备份,/bak/mysql/2015-07-08_21-01-19/是指第2次的增量备份,以此类推。

以上句子履行成功之后,终究数据在全备目录下。

第一步完结之后,咱们开端第二步:回滚未完结的日志:

[root@local-db mysql]# innobackupex defaults-file=/etc/my.cnf  user=root password=123456  apply-log  /bak/mysql/2015-07-08_18-52-43/

上面履行完之后,/bak/mysql/2015-07-08_18-52-43/里的备份文件已彻底准备就绪,最终一步是复制:

[root@local-db mysql]# innobackupex defaults-file=/etc/my.cnf  user=root password=123456 copy-back /bak/mysql/2015-07-08_18-52-43/

修正目录权限,发动mysql。

修正目录权限,发动mysql。

康复完结,如下图



版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表千亿集团立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章