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