一种使用管道文件在线压缩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服务器的用户名/口令及服务名称。

  • 本文链接地址:https://www.dbainfo.net/online-compress-iq-dumpfile-by-pipefile.htm
  • 本文为dbainfo个人原创,请在尊重作者劳动成果的前提下进行转载;
  • 转载务必注明原始出处 : Sybase数据库技术,数据库恢复专家
  • 对《一种使用管道文件在线压缩IQ备份文件的方法》有何疑问或见解,请在本文下方发表;
  • 对网站还有其他问题或建议,请提交在留言板,谢谢!
  • 目前还没有任何评论.
    :wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)