【问题背景】
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
后面步骤和原来的还原步骤相同。
mysql管理之使用xtrabackup进行热备
mysql开源备份工具xtrabackup备份部署
mysql xtrabackup备份和恢复
用xtrabackup实现mysql的主从复制快速部署【主不锁表】
安装和使用 percona 推出的 xtrabackup 备份 mysql
xtrabackup 的详细介绍:请点这里
xtrabackup 的下载地址:请点这里
本文永久更新链接地址: