Xtrabackup流备份,增量和压缩小结

【问题背景】

1、  针对MySQL文件比较大,需要压缩的数据库。 如500G数据库,xtrabackup备份后文件为500G,备份完成后再压缩打包,相当于文件读写3次。

2、  对于磁盘IO不好的从库,整个过程会持续好几个小时,有时把IO直接搞到100%, 导致从库延时很大。

3、  xtrabackup的xbstream流备份,直接备份后,通过管道直接压缩,这样把原约3次的IO,减少为一次,整个使用时间也变短了。

【适合使用场景】

1、  数据库文件比较大,要压缩的库;导致整个备份时间长,且要求从库延迟不能太大的库。

【线上使用示例】

主站有一组机器已测试通过,简单对比:

1、  xtrabackup全量备份,不压缩,直接tar包170G, 用时80分钟; xtrabackup流备份+libz2压缩,文件大小46G, 用时40分钟。

2、  备份过程中两个的IO util对比:

常规备份,不压缩:

Xbstream备份+压缩

【基本使用原理】

1 备份步骤

由于xbstream+压缩备份后,无备份目录,xtrabackup可指定--extra-lsndir目录,此目录只存放此次备份的xtrabackup_checkpoints文件;后面的增量备份时,--incremental-basedir就指向前一日的extra-lsndir目录便可。

1)  全量备份命令:

innobackupex --user=dump  --password=xxx  --host=127.0.0.1  --slave-info --stream=xbstream --extra-lsndir="$lsndir"  $baseDir 2>>"$backupLog" | lbzip2 -kv -n 10 > "$backup_file" 2>>"$backupLog"

2) 增量备份命令:

innobackupex --user=dump  --password=xxx  --host=127.0.0.1  --slave-info --stream=xbstream --extra-lsndir="$lsndir"  --incremental  --incremental-basedir="$last_lsndir"  $baseDir 2>>"$backupLog" | lbzip2 -kv -n 10 > "$backup_file" 2>>"$backupLog"

2、  还原步骤

备份后生成的为压缩了的文件,所以要解压,再用xbstream打开流体文件(较之原来还原,多了此步骤)。

1)  解压压缩的文件:lbzip2 -dkv -n 10 2013-07-14_bak_full.bz2

2)  解压液体文件为目录: xbstream -x < 2013-07-14_bak_full -C /work/bak/2013-07-14_full/

### Xtrabackup全量备份增量备份的区别及用法 #### 全量备份 (Full Backup) 全量备份是指对整个数据库的数据文件进行一次完整的复制操作。这种备份方式会捕获所有的数据页,即使某些页面未被修改也会包含在内。以下是创建全量备份的具体方法: 通过运行`xtrabackup`命令可以完成全量备份的操作[^3]。例如,以下是一个典型的全量备份命令: ```bash xtrabackup --backup --target-dir=/path/to/full_backup_dir/ ``` 此命令会在指定的目标目录下保存所有必要的数据文件。 #### 增量备份 (Incremental Backup) 增量备份则是基于上一次的全量或增量备份来记录自上次备份以来发生的变化部分。这种方式的优点在于它仅存储发生变化的部分,因此通常占用更少的空间并能更快地完成备份过程。为了实现这一点,XtraBackup利用了InnoDB的日志机制来追踪这些变化[^5]。 要执行增量备份,需提供一个参数指向最近的一次基础备份(无论是另一个增量还是最初的全备)。下面展示了一个如何设置增量备份的例子: ```bash xtrabackup --backup --target-dir=/path/to/incr_backup_dir/ \ --incremental-basedir=/path/to/full_or_previous_incr_backup_dir/ ``` 这里的关键选项是`--incremental-basedir`,它指定了作为本次增量的基础备份位置[^1]。 #### 还原程 对于全量备份来说,其恢复相对简单直接;而对于多层嵌套的增量备份,则需要依次应用每一级增量到初始的完全副本之上才能最终得到最新的状态版本。这可以通过重复调用准备阶段的相关指令达成目标。 #### 工具对比考量因素 当评估像MySQL Enterprise Backup这样的商业解决方案或者开源替代品如MariaDB Backup时,应该考虑到诸如性能表现、资源消耗以及特定功能需求等方面差异[^4]。然而无论如何挑选具体产品方案,都务必重视验证测试环节以确认所选策略能够满足实际业务连续性的要求[^2]。 ```bash # Example of preparing a full backup before applying incrementals. xtrabackup --prepare --apply-log-only --target-dir=/path/to/full_backup/ # Then apply each incremental on top sequentially. xtrabackup --prepare --apply-log-only --target-dir=/path/to/full_backup/ --incremental-dir=/path/to/incremental1/ xtrabackup --prepare --target-dir=/path/to/full_backup/ --incremental-dir=/path/to/incrementalN/ ``` 上述脚本展示了怎样逐步处理一系列增量更新至原始基线直至最新状况的过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值