Chinaunix首页 | 论坛 | 博客
  • 博客访问: 308456
  • 博文数量: 33
  • 博客积分: 586
  • 博客等级: 中士
  • 技术积分: 494
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-27 14:05
个人简介

衡铁刚 1)2011-2013:Alibaba MySQL DBA 2)2014-至今: Alibaba 数据库PD

文章分类

全部博文(33)

文章存档

2016年(1)

2015年(10)

2013年(5)

2012年(17)

我的朋友

分类: Mysql/postgreSQL

2012-10-09 13:25:06

mysqldump可以逻辑备份数据库并存放到本地,但如果数据量很大或考虑到成本,就需要使用压缩,采用先dump再compress,需要一次读一次写再一次读一次写(2读2写),于是使用管道流压缩,例如:
  • mysqldump options | compress > bakfile  #bakfile 备份集的全路径,options  mysqldump的一些参数
管道流压缩一次读一次(1读1写),但上述形式管道中如果有命令出错则无法捕获,导致不能准备判断备份集的可用性,于是在备份工具加入如下判断:
  • cat /dev/null > $dumpflagfile  #清空dumpflagfile(用来临时存放备份结果状态)
  • (mysqldump options || echo "N">$dumpflagfile) | (compress || echo "N">$dumpflagfile ) > bakfile
  • if [ -e "$dumpflagfile"  ] && [ -s "$dumpflagfile"  ]
  • then
  • read dumpFlag < $dumpflagfile
  • fi
首先清空dumpflagfile,小括号()会重新开启一个子shell来执行命令,子shell无法传递值给父shell,所有借助文件中转一下,如果mysqldump报错则将N记录到dumpflagfile中,如果compress报错则将N记录到dumpflagfile中,如果dumpflagfile存在且不为空则读取dumpflagfile中的值作为最终的备份结果
阅读(3842) | 评论(0) | 转发(0) |
0

上一篇:source error (ROW_FORMAT)

下一篇:进程地址空间

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