【定期备份Linux上DB】自动备份DB2数据库

为了防止不可挽回的数据丢失风险发生,需要定期备份数据库,最好弄成定时定期自动备份

  • 首先准备好自动备份脚本,以DB2为例,脚本基本代码如下,脚本保存为bash.sh文件,上传到Linux服务器上,
    /mnt/backup是Windows共享文件夹的路径
  1 #!/bin/bash -x
  2 #exportSchema auto
  3 . /etc/profile
  4 . ~/.profile
  5 . /home/db2inst1/sqllib/db2profile
  6 
  7 ymd=$(date +%Y-%m-%d_%H-%M-%S)
  8 instanceName="db2inst1";
  9 basePath="/mnt/backup/${ymd}_auto_backup/${instanceName}";
 10 logPath="${basePath}/log/"
 11 logName="${logPath}/backup_${instanceName}_${ymd}.log"
 12 
 13 
 14 function exportData() {
 15 
 16 
 17     dbName=$1;
 18 
 19     dataPath="${basePath}/${instanceName}_${dbName}_Bak"
 20 
 21 
 22     #db2 force applications all;
 23     db2 connect to ${dbName};
 24     fn_log "db2 connect to ${dbName};";
 25 
 26     if [ ! -d $dataPath ] 
 27     then 
 28         mkdir -p ${dataPath};
 29         fn_log "mkdir -p ${dataPath};";
 30 
 31     fi 
 32     cd ${dataPath};
 33 
 34     db2move ${dbName} export -aw
 35     fn_log "db2move ${dbName} export -aw";
 36 }
 37 
 38 function exportSchema() {
 39 
 40 
 41     dbName=$1;
 42     schemaPath="${basePath}/${instanceName}_${dbName}_Schema_Bak/"
 43     #db2 force applications all;
 44     db2 connect to ${dbName};
 45     fn_log "db2 connect to ${dbName};";
 46 
 47     if [ ! -d "$schemaPath" ]; 
 48     then 
 49         mkdir -p ${schemaPath};
 50         fn_log "mkdir -p ${schemaPath};";
 51 
 52     fi 
 53     cd ${schemaPath};
 54 
 55     db2look -d ${dbName} -e -a -l -o "${dbName}_${ymd}".sql;
 56     fn_log "db2look -d ${dbName} -e -a -l -o "${dbName}_${ymd}".sql";
 57 
 58 
 59 }
 60 
 61 function log_info ()
 62 {
 63     if [ ! -d ${logPath}  ]
 64     then
 65         mkdir -p ${logPath}
 66     fi
 67 
 68     DATE_N=$(date "+%Y-%m-%d %H:%M:%S")
 69     USER_N=$(whoami)
 70     echo "${DATE_N} ${USER_N} execute $0 [INFO] $@" >>$logName #成功日志
 71 
 72 }
 73 
 74 function log_error ()
 75 {
 76     DATE_N=$(date "+%Y-%m-%d %H:%M:%S")
 77     USER_N=$(whoami)
 78 
 79     echo -e " ${DATE_N} ${USER_N} execute $0 [ERROR] $@ "  >>$logName #失败日志
 80 
 81 }
 82 
 83 function fn_log ()  {
 84     if [  $? -eq 0  ]
 85     then
 86         log_info "sucessed."
 87         echo -e "sucessed. "
 88     else
 89         log_error "failed."
 90         echo -e " failed."
 91     fi
 92 }
 93 
 94 
 95 exportSchema "DBSchemaName";
 96 log_info 'exportSchema "db2inst1" "SchemaName";'
 97 
 98 exportData "DBSchemaName";
 99 log_info 'exportData "db2inst1" "DBSchemaName";'
100 
101 exit;

例如上传到/var/shell/bash.sh

  • 修改权限chmod 755 /var/shell/*.sh
    • 配置crontab
    • vi /etc/crontab
    • 添加一行执行脚本:每7天1:05执行

 

50 01 */7 * *  db2inst1 "/var/shell/bash.sh"
  • service crond restart
  • tailf /var/log/cron 

posted on 2022-03-25 16:47  星际贸易梦想家  阅读(234)  评论(0编辑  收藏  举报

导航