Chinaunix首页 | 论坛 | 博客
  • 博客访问: 744745
  • 博文数量: 38
  • 博客积分: 587
  • 博客等级: 中士
  • 技术积分: 579
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-17 14:32
文章存档

2013年(15)

2012年(23)

分类: Mysql/postgreSQL

2013-08-13 11:09:03

 【问题背景】 


 

1、   针对MySQL文件比较大,需要压缩的数据库。 500G数据库,xtrabackup备份后文件为500G,备份完成后再压缩打包,相当于文件读写3次。
2、   对于磁盘IO不好的从库,整个过程会持续好几个小时,有时把IO直接搞到100%, 导致从库延时很大。 


 

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


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

【线上使用示例】
  主站有一组机器已测试通过,简单对比:
1、   xtrabackup全量备份,不压缩,直接tar170G 用时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/
后面步骤和原来的还原步骤相同。

阅读(7053) | 评论(1) | 转发(0) |
0

上一篇:MySQL过期数据归档和清理--pt--archiver

下一篇:没有了

给主人留下些什么吧!~~

Ophelia_cu2013-12-25 13:49:46

xtrabackup 这个工具可以运行在windows环境上吗?