言寸

导航

xtrabackup 2.4 增量备份

环境   mysql 社区版 5.7.20   centos7.2

增量备份

您可以在每个完整备份之间执行许多增量备份,因此您可以设置备份过程,例如每周一次完整备份和每天增量备份,或每天完整备份和每小时增量备份。

增量备份有效,因为每个InnoDB页面都包含一个日志序列号或LSNLSN是整个数据库系统的版本号。每个页面的LSN显示它最近的更改。

创建增量备份

(1)完整备份

要进行增量备份,请像往常一样以完整备份开始。该 xtrabackup二进制写入一个名为xtrabackup_checkpoints到备份的目标目录。

此文件包含一行显示 to_lsn,即备份结束时数据库的LSN。 使用以下命令创建完整备份

xtrabackup -uroot -p000000 --backup --target-dir=/data/backups/base

 

(2)在完整备份的基础上,建立增量备份

xtrabackup -uroot -p000000 --backup --target-dir=/data/backups/inc1 --incremental-basedir=/data/backups/base

 

准备增量备份

(1)

增量备份步骤与完全备份的步骤不同。在完全备份中,执行两种类型的操作以使数据库保持一致:

从日志文件中对数据文件重放已提交的事务,并回滚未提交的事务。

在准备增量备份时,必须跳过未提交事务的回滚,因为备份时未提交的事务可能正在进行中,并且很可能它们将在下一次增量备份中提交。

可使用-apply-log-only 来阻止回滚阶段

警告
如果不使用该选项 --apply-log-only 来阻止回滚阶段,那么增量备份将毫无用处。回滚事务后,无法应用进一步的增量备份。
--apply-log-only

此选项仅在准备备份时执行重做阶段。这对增量备份非常重要。

 

目前有以下备份

/data/backups/base    完整备份
/data/backups/inc1    增量备份

 

(2) 要准备基本备份,您需要像往常一样运行,但要阻止回滚阶段

 xtrabackup --prepare --apply-log-only --target-dir=/data/backups/base

 

一般情况下 log sequence number 与 to_lsn  一致

注意
即使已跳过回滚阶段,此备份实际上也可以按原样恢复。
如果你恢复它并启动MySQL,InnoDB将检测到没有执行回滚阶段,并且它将在后台执行,因为它通常用于启动时的崩溃恢复。
它会通知您数据库未正常关闭。

 

(3)将增量备份应用于完整备份,如果有其它增量备份,按照顺序执行下列语句

xtrabackup --prepare --apply-log-only --target-dir=/data/backups/base --incremental-dir=/data/backups/inc1

友情提示:首次试验,建议创建一个完整备份的副本,方便后续使

恢复备份

 xtrabackup --copy-back --target-dir=/data/backups/base

修改权限

 chown mysql:mysql  /usr/local/mysql/data -R *

启动服务

 service mysqld  start

 

查看,已经成功恢复

 

posted on 2019-05-07 15:39  言寸  阅读(935)  评论(0)    收藏  举报