欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

db2 自动备份(linux 、windows)总结

程序员文章站 2022-05-20 22:57:58
...

1.linux db2 自动备份,备份后压缩,拷贝到另一服务器 全备份: #!/bin/sh #------------------------------------- #db2自动备份脚本 #by lushuai # create at 2013-08-05 #------------------------------------ #参数 Basepath=/home/db2-backup-linux/ d

1.linux db2 自动备份,备份后压缩,拷贝到另一服务器

全备份:

#!/bin/sh
#-------------------------------------
#db2自动备份脚本
#by lushuai
# create at 2013-08-05
#------------------------------------
#参数
Basepath=/home/db2-backup-linux/
dblist=$Basepath"script/dblist.txt" #要备份的数据库文件列表
bkdate=`date +%Y%m%d` #备份时间
#bkrootpath=$Basepath"" #备份路径
TargetPath=$Basepath
FilePath=$TargetPath"backup/"$bkdate
bkyear="`date +%Y`" #要备份的年度,默认是当前年度
ftphost=192.168.0.15 #ftp服务器ip
ftpuser=gever #ftp服务器的用户,必须有create read write权限
ftppwd=geverabc #ftp服务器的用户username的密码
dbUser=db2admin
dbPwd=db2admin
Backup_Log=$TargetPath$bkdate.log #日志

echo "1.备份初始化,备份时间为 `date +'%Y-%m-%d %H:%M:%S'`" >> $Backup_Log

if [ -e "$Backup_Log" ];then {
echo "the log file is already exist!" >> $Backup_Log
} else {
touch $Backup_Log
echo "create log file Successful!" >> $Backup_Log
}
fi


#创建备份文件存储路径,并授权
if [ -w "${FilePath}" ];then {
echo "---The database dir is already exist!" >> $Backup_Log
} else {
mkdir -p "$FilePath"
chmod 777 -R "$FilePath"
echo "---The database dir create Successful!" >> $Backup_Log
}
fi

#读取数据库文件列表,备份数据库
while read LINE
do
echo "2.开始备份数据库:"$LINE >> $Backup_Log
su - db2admin -c "db2 backup db $LINE online to $FilePath include logs"
echo "3.数据库备份结束:"$LINE"($FilePath)" >> $Backup_Log
done

#文件打包
echo "4.压缩文件" >> $Backup_Log
cd $TargetPath"backup"
tar -zcvf $bkdate.tgz $bkdate >> $Backup_Log

#删除压缩前数据
echo "5.删除压缩前数据" >> $Backup_Log
echo
rm -rf ${bkdate}
#删除10天前备份数据

if [ -w "`date +%Y%m%d --date '20 days ago'`" ]; then {
echo "6.删除20天前备份数据" >> $Backup_Log
rm -rf "$TargetPath"backup/"`date +%y%m%d --date '20 days ago'`"
} else {
echo "6.没有20天前备份数据供删除" >> $Backup_Log
}
fi
echo "7.备份结束" >> $Backup_Log

#scp $bkdate.tgz
root@10.10.0.154:/home/212_db_backup
#echo "8.备份文件上传至10.10.0.154:/home/212_db_backup,多机备份" >> $Backup_Log
echo "============================================================================" >> $Backup_Log
exit

增量备份:

#!/bin/sh
#-------------------------------------
#db2自动备份脚本
#by lushuai
# create at 2013-08-05
#------------------------------------
#参数
Basepath=/home/db2-backup-linux/
dblist=$Basepath"script/dblist.txt" #要备份的数据库文件列表
bkdate=`date +%Y%m%d` #备份时间
#bkrootpath=$Basepath"" #备份路径
TargetPath=$Basepath
FilePath=$TargetPath"backup/incremental"$bkdate
bkyear="`date +%Y`" #要备份的年度,默认是当前年度
ftphost=192.168.0.15 #ftp服务器ip
ftpuser=gever #ftp服务器的用户,必须有create read write权限
ftppwd=geverabc #ftp服务器的用户username的密码
dbUser=db2admin
dbPwd=db2admin
Backup_Log=$TargetPath"incremental"$bkdate.log #日志

echo "1.备份初始化,增量备份时间为 `date +'%Y-%m-%d %H:%M:%S'`" >> $Backup_Log

if [ -e "$Backup_Log" ];then {
echo "the log file is already exist!" >> $Backup_Log
} else {
touch $Backup_Log
echo "create log file Successful!" >> $Backup_Log
}
fi


#创建备份文件存储路径,并授权
if [ -w "${FilePath}" ];then {
echo "---The database dir is already exist!" >> $Backup_Log
} else {
mkdir -p "$FilePath"
chmod 777 -R "$FilePath"
echo "---The database dir create Successful!" >> $Backup_Log
}
fi

#读取数据库文件列表,备份数据库
while read LINE
do
echo "2.开始备份数据库:"$LINE >> $Backup_Log
su - db2admin -c "db2 backup db $LINE online incremental to $FilePath include logs"
echo "3.数据库备份结束:"$LINE"($FilePath)" >> $Backup_Log
done

#文件打包
echo "4.压缩文件" >> $Backup_Log
cd $TargetPath"backup"
tar -zcvf "incremental"$bkdate.tgz "incremental"$bkdate >> $Backup_Log

#删除压缩前数据
echo "5.删除压缩前数据" >> $Backup_Log
echo
rm -rf "incremental"${bkdate}
#删除10天前备份数据

if [ -w "`date +%Y%m%d --date '20 days ago'`" ]; then {
echo "6.删除20天前备份数据" >> $Backup_Log
rm -rf "$TargetPath"backup/incremental"`date +%y%m%d --date '20 days ago'`"
} else {
echo "6.没有20天前备份数据供删除" >> $Backup_Log
}
fi
echo "7.备份结束" >> $Backup_Log

#scp "incremental"$bkdate.tgz
root@10.10.0.154:/home/212_db_backup
#echo "8.备份文件上传至10.10.0.154:/home/212_db_backup,多机备份" >> $Backup_Log
echo "============================================================================" >> $Backup_Log
exit

2.linux db2导出表结构和数据

echo 数据备份开始
#加载环境变量
. /home/db2inst1/sqllib/db2profile
#BACKDIR是放置备份文件的目录
BACKDIR="/home/db2inst1/backup"
#DBNAME是数据库名称
DBNAME="ATMP"
#连接数据库
db2 connect to $DBNAME user db2inst1 using 000000
#新建临时目录存放导出的表结构文件
#mkdir $BACKDIR
#新建临时目录存放导出的表结构文件
mkdir $BACKDIR/$DBNAME
#给几个目录授可读、可写权限
chmod a+w $BACKDIR
chmod a+w $BACKDIR/$DBNAME
#切换到新建临时目录下
cd $BACKDIR/$DBNAME
#执行导出数据库表结构
db2look -d $DBNAME -td @ -i db2inst1 -w 000000 -e -o ATMP.sql
#新建临时目录存放导出的表数据文件
mkdir atmpdata
#给目录授可读、可写权限
chmod a+w atmpdata
#切换到新建临时目录下
cd atmpdata
#执行导出数据库表数据
db2move $DBNAME export -u db2inst1 -p 000000
#取系统日期
DATE=`date +%Y%m%d`
hh=`date +%H`
mm=`date +%M`
now=$DATE-$hh:$mm
#切换到备份目录下
cd $BACKDIR
echo $now
#开始打包和压缩备份文件
tar cvf - $DBNAME | gzip -qc > $DBNAME.$now.tar.gz
#删除临时目录
rm -rf $BACKDIR/$DBNAME
echo 完成数据备份

3.window 自动备份数据

参考:http://lushuai1987.iteye.com/admin/blogs/1920669