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) |