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

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 < $dblist

   #文件打包
   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
[email protected]:/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 < $dblist

   #文件打包
   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
[email protected]:/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

你可能感兴趣的:(Others)