注册
灵活备份数据
培训园地/ 文章详情 /

灵活备份数据

2023/03/06 1156 0 0

在线系统中,随着数据量的不断增长,数据库全库物理备份时间会逐渐增加,同时备份期间会应用也会受一定影响;而逻辑备份以轻便灵活著称,可以实现每次备份部分数据,对系统影响最小。
以下脚本通过两种方式,实现对两种数据的备份,一种为重要数据,一种为历史数据。
针对重要数据,每天进行备份,同时压缩备份文件,保留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

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服