保存数据库备份时,需要先导出备份文件,再压缩文件,由于备份文件非常大,可能磁盘空间不够,所以要使用管道直接输出给GZIP压缩,无需先导出备份文件,具体命令如下:
#!/bin/sh
FILE=data_`date +%Y%m%d%H`
source /root/.bash_profile
pipe=$(mktemp /app/tmp.XXX)
rm -f $pipe
mkfifo $pipe
/usr/bin/gzip < $pipe > /app/dbbackup/$FILE.sql.gz &
mysqldump -pxxxx --single-transaction --master-data=1 --all-databases >> $pipe
rm -f $pipe