Percona Xtrabackup基于备份的完整备份增量备份

我想使用Percona XtraBackup创build一个每小时一次的MySQL数据库备份到分段系统。

是否可以准备$ BACKUPBASE,然后使用这个准备好的备份库作为以下增量备份的基础(使用incremental-lsn选项)?

我的计划是:

更具体:

  • 那么–redo-log选项呢。 我什么时候需要在这种情况下指定这个选项?
  • 您可以将增量备份应用于准备好的$ BACKUPBASE吗?

否,因为上面提到的–apply-log不会更新xtrabackup_checkpoints中的LSN,因此每个下一个增量备份都将复制自上次完全备份以来修改的页面。 这不是你想要达到的

UPD

要实现你的场景,你需要:

  1. 采取完全备份

     innobackupex --no-timestamp /path/full 
  2. 保存最后的LSN

     # cat /path/full/xtrabackup_checkpoints backup_type = full-backuped from_lsn = 0 to_lsn = 1887987291 last_lsn = 1887987291 compact = 0 to_lsn=`grep to_lsn /path/full/xtrabackup_checkpoints | awk '{ print $3 }'` 
  3. 应用xtrabackup REDO日志

     innobackupex --apply-log --redo-only /path/full/ 
  4. 采取增量备份

     innobackupex --no-timestamp --incremental /path/inc/ --incremental-lsn=$to_lsn 
  5. 保存最后的LSN

     # cat /path/inc/xtrabackup_checkpoints backup_type = incremental from_lsn = 1887987291 to_lsn = 1887987291 last_lsn = 1887987291 compact = 0 to_lsn=`grep to_lsn /path/inc/xtrabackup_checkpoints | awk '{ print $3 }'` 
  6. 应用增量更改和重做日志

     innobackupex --apply-log --redo-only --incremental-dir=/path/inc /path/full/ 
  7. 使用增量备份删除目录

     rm -r /path/inc 

重复4-7尽可能多的,你需要的。 / path / full将包含数据库的最新版本。

当你想恢复数据库

  1. 完成应用日志(=创buildREDO日志):

     innobackupex --apply-log /path/full 
  2. 将备份副本复制到datadir

     mv /path/full/* /var/lib/mysql 
  3. 修复权限(检查/path/full/backup-my.cnf中的选项与/etc/my.cnf(Debian中的/etc/mysql/my.cnf)相同))

     chown -R mysql /var/lib/mysql 
  4. 启动MySQL

     /etc/init.d/mysql start