一种使用管道文件在线压缩IQ备份文件的方法
IQ备份数据库时不支持在线压缩备份文件。
在当前情况下,只能等到IQ数据库备份完成后再压缩备份文件。如果压缩IQ备份文件的话,除了IQ数据库备份文件占用存储空间外还需要压缩文件空间。
不管压缩IQ备份文件与否,都至少需要IQ数据库已用空间大小的存储空间。
如何节省IQ备份文件占用存储空间呢?
下面提供一种使用管道文件在线压缩IQ备份文件的方法,供参考。
在backup database命令中如果不指定备份分片文件的大小限制,则默认每个备份分片文件限制为2G;
超过备份分片文件的大小限制时,IQ会自动给备份分片文件名称尾部添加递增的数字后缀;
指定多个to语句可以并行写备份文件。
下面脚本在Linux平台上测试可用,语句中指定size 1000000000 限制每个备份分片文件大小上限为:1T Bytes;如果IQ数据库已用空间超过3T的话,则要求变量stripenum 至少为4。
如果想增加IQ备份分片文件的个数,可以指定更大的stripenum值。IQ备份分片文件个数越多,备份文件压缩并行度越高。
需要使用sybase用户执行下面的脚本:
#并发数
stripenum=4#create pipe file
for i in `seq 1 $stripenum`
do
mknod /tmp/pipe_iqdump$i.1 p
nohup gzip < /tmp/pipe_iqdump$i.1 > /opt/database/iqdump$i.1.gz &
done#generate backup SQL file
echo "backup database block factor 50 full " > iqbackupfull.sql
for i in `seq 1 $stripenum`
do
echo "to '/tmp/pipe_iqdump$i' size 1000000000" >> iqbackupfull.sql
done
echo ";" >> iqbackupfull.sql#backup database
dbisql -c "uid=DBA;pwd=sql;eng=tpch_srv" -nogui iqbackupfull.sql#delete pipe file
for i in `seq 1 $stripenum`
do
rm -f /tmp/pipe_iqdump$i.1
done
rm -f iqbackupfull.sql
其中:红色标志的/opt/database表示IQ备份文件存放的位置,修改IQ服务器的用户名/口令及服务名称。