Rumah > Artikel > pangkalan data > db2 自动备份(linux 、windows)总结
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