1.linux db2 自动备份,备份后压缩,拷贝到另一服务器
全备份:
#!/bin/sh
#-------------------------------------
#db2自动备份脚本
#by lushuai
# create at 2013-08-05
#------------------------------------
#参数
basepath=/home/db2-backup-linux/
dblist=$basepathscript/dblist.txt #要备份的数据库文件列表
bkdate=`date +%y%m%d` #备份时间
#bkrootpath=$basepath #备份路径
targetpath=$basepath
filepath=$targetpathbackup/$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 $targetpathbackup
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 $targetpathbackup/`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=$basepathscript/dblist.txt #要备份的数据库文件列表
bkdate=`date +%y%m%d` #备份时间
#bkrootpath=$basepath #备份路径
targetpath=$basepath
filepath=$targetpathbackup/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=$targetpathincremental$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 $targetpathbackup
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 $targetpathbackup/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
