mysql5.6 增量备份_mysql5.6利用xtrabackup全备及增量备份

1.xtrabackup安装 650) this.width=650;" src="http://www.68idc.cn/help/uploads/allimg/151119/0Z5504108-0.jpg" title="1.png" alt="wKioL1Wl8x7DJM-GAAE5jG_ZhOQ428.jpg" /> 2.全备及恢复 (1)全备 查看数据库 650) this.width=650;" src="http://www.6

1.xtrabackup安装

a46a6760c5243129ab90f800d51cb590.png

2.全备及恢复

(1)全备

查看数据库

4374185941a5c87979f14c3d0a83674a.png

[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),在该目录下存放备份文件。

2340879860677c5b9a5007d29b84b278.png

(2)恢复

删除数据库test123,尝试恢复

be9c912e2fe051c7457eaf77c54debbc.png

恢复之前,要先关闭数据库,并且删除数据文件和日志文件。

07d8e512bc07053f0c00e6366e3ad74c.png

642e6170d8c61fecb2cb88767baa89c4.png

[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,即把备份文件拷贝至原数据目录下。恢复完成之后,一定要记得检查数据目录的所有者和权限是否正确。

c296e8dbfc93d980493ea1041e718de3.png

cdfc2955209ee19ac7ad92d506a35ade.png

3.增量备份及恢复

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

(1)增量备份

增量备份需要基于全备,我们已经有了一个全备(/bak/mysql/2015-07-08_18-52-43/),我们需要在该全备的基础上做增量备份。

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

7b89d3d887042610f5d1d405fa554333.png

b7b7475a9201b6c57e3cc816f5939a94.png

[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/

26a6538689572a9c1ca4a75583b6720a.png

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

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

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

76d2195ac86d72eae18bbd5d3a5cabf0.png

基于该全备的增量备份的信息如下:

c5cb6d003cfd53efa512f1417b68c4e8.png

从上面可以看出,增量备份的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/

1350c3a52dbf00e51391e0b5df45e3a7.png

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

5c92df2562f0945119f52dc3359d2d2e.png

可以看到,该增量备份的from_lsn是从上一次增量备份的to_lsn开始的。

(2)恢复

删除数据库test456,尝试恢复

c26336fe134ee709c9f36d9586c58496.png

恢复之前,要先关闭数据库,并且删除数据文件和日志文件。

c0ab8ffa9536e56be34afc14fcb0e563.png

cde63f397fd94156ba221872bd39390f.png

增量备份的恢复比全备要复杂很多,第一步是在所有备份目录下重做已提交的日志,如:

[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/是指第二次的增量备份,以此类推。

以上语句执行成功之后,最终数据在全备目录下。

第一步完成之后,我们开始第二步:回滚未完成的日志:

[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。

c305d733e2b51c1875b978743a1d1144.png

修改目录权限,启动mysql。

恢复完成,如下图

f097a5141dd74a02880d9296e201a8ba.png

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值