我想使用Percona XtraBackup创build一个每小时一次的MySQL数据库备份到分段系统。
是否可以准备$ BACKUPBASE,然后使用这个准备好的备份库作为以下增量备份的基础(使用incremental-lsn选项)?
我的计划是:
那么每隔一小时
将增量备份集成到$ BACKUPBASE中
innobackupex --apply-log $BACKUPBASE --incremental-dir=$INCREMENTALDIR innobackupex --apply-log $BACKUPBASE
删除$ INCREMENTALDIR
更具体:
否,因为上面提到的–apply-log不会更新xtrabackup_checkpoints中的LSN,因此每个下一个增量备份都将复制自上次完全备份以来修改的页面。 这不是你想要达到的
UPD
要实现你的场景,你需要:
采取完全备份
innobackupex --no-timestamp /path/full
保存最后的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 }'`
应用xtrabackup REDO日志
innobackupex --apply-log --redo-only /path/full/
采取增量备份
innobackupex --no-timestamp --incremental /path/inc/ --incremental-lsn=$to_lsn
保存最后的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 }'`
应用增量更改和重做日志
innobackupex --apply-log --redo-only --incremental-dir=/path/inc /path/full/
使用增量备份删除目录
rm -r /path/inc
重复4-7尽可能多的,你需要的。 / path / full将包含数据库的最新版本。
当你想恢复数据库
完成应用日志(=创buildREDO日志):
innobackupex --apply-log /path/full
将备份副本复制到datadir
mv /path/full/* /var/lib/mysql
修复权限(检查/path/full/backup-my.cnf中的选项与/etc/my.cnf(Debian中的/etc/mysql/my.cnf)相同))
chown -R mysql /var/lib/mysql
启动MySQL
/etc/init.d/mysql start