在线系统中,随着数据量的不断增长,数据库全库物理备份时间会逐渐增加,同时备份期间会应用也会受一定影响;而逻辑备份以轻便灵活著称,可以实现每次备份部分数据,对系统影响最小。
以下脚本通过两种方式,实现对两种数据的备份,一种为重要数据,一种为历史数据。
针对重要数据,每天进行备份,同时压缩备份文件,保留30天。
#expdb
export LD_LIBRARY_PATH=/home/dmdba/dm/dmdbms/bin
export DM_HOME=/home/dmdba/dm/dmdbms
export LANG=zh_CN
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
#init backup path
BACKUPPATH=/dbbak/d5000_dmp
time=`date +%Y%m%d%H%M%S`
#run dexp
pidcount=`ps cax -o pid,command | grep -w dmserver | grep -c dmserver`
if [ $pidcount -eq 1 ];
then
$DM_HOME/bin/dexp SYSDBA/XXXX@127.0.0.1:5236 FILE=${BACKUPPATH}/d5000xxxxxx${time}.dmp LOG=${BACKUPPATH}/d5000xxxxxx${time}.log owner=d5000
sleep 3
cd ${BACKUPPATH}
#auto tar.gz bakup file
tar -zcvf d5000xxxxxx${time}.tar.gz d5000xxxxxx${time}.*
#auto delete tar.gz file 30 days ago end with .tar.gz
find ${BACKUPPATH} -mtime +30 -name "d5000*.tar.gz" -exec rm -rf {} \;
#auto delete bakup file 1 days ago begin with d5000xxxxxx
find ${BACKUPPATH} -mtime +1 -name "d5000*.dmp" -exec rm -rf {} \;
#auto delete bakup log 1 days ago begin with d5000xxxxxx
find ${BACKUPPATH} -mtime +1 -name "d5000*.log" -exec rm -rf {} \;
fi
针对历史数据,利用dexp的对表名通配符功能(FUZZY_MATCH)和查询数据功能(query),每天备份前一天历史数据,同时压缩备份文件。
#expdb
export LD_LIBRARY_PATH=/home/dmdba/dm/dmdbms/bin
export DM_HOME=/home/dmdba/dm/dmdbms
export LANG=zh_CN
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
#init backup path
BACKUPPATH=/dbbak/hisdb_dmp
#input starttime and endtime
start_time=`date -d "1 day ago" +"%Y-%m-%d 00:00:00"`
#echo $start_time
end_time=`date +"%Y-%m-%d 00:00:00"`
#echo $end_time
ftime=`date -d "${start_time}" +%Y%m%d`
#run dexp
pidcount=`ps cax -o pid,command | grep -w dmserver | grep -c dmserver`
if [ $pidcount -eq 1 ];
then
$DM_HOME/bin/dexp HISDB/xxx@127.0.0.1:5236 FILE=${BACKUPPATH}/YC_HS_${ftime}.dmp LOG=${BACKUPPATH}/YC_HS_${ftime}.log TABLES=YC_HS% query="where occur_time>='${start_time}' and occur_time<'${end_time}'" FUZZY_MATCH=Y LOG_WRITE=Y
sleep 3
cd ${BACKUPPATH}
#tar yc_hs
tar -zcvf YC_HS${ftime}.tar.gz YC_HS_${ftime}.*
sleep 3
#auto delete bakup file 1 days ago begin with YC_HS
find ${BACKUPPATH} -mtime +1 -name "YC_HS*.dmp" -exec rm -rf {} \;
find ${BACKUPPATH} -mtime +1 -name "YC_HS*.log" -exec rm -rf {} \;
fi
文章
阅读量
获赞