Shell腳本使用匯總整理——達夢數據庫備份腳本

Shell腳本使用匯總整理——達夢數據庫備份腳本html

Shell腳本使用的基本知識點彙總詳情見鏈接:linux

http://www.javashuo.com/article/p-zzlppuvp-m.htmlshell

腳本分爲三部分配置信息、腳本文件、定時任務;數據庫

一、配置信息:數組

username=SYSDBA
password=SSSTTTSSS
ipStr=localhost
portNumber=5327
backupsFileStr=/wocloud/db/backups
logsFileStr=/wocloud/db/backups/dmDexpLogs
backupsFileDay=3
dexpStr=/opt/dmdbms/bin/dexp
saveDb=HEBEI

參數說明:工具

username:用戶名
password:密碼
ipStr:ip地址,最好是localhost
portNumber:端口號
backupsFileStr:存放備份文件絕對路徑
logsFileStr:導出過程當中日誌存放絕對路徑
backupsFileDay:保留備份記錄多少天
dexpStr:導出工具dexp絕對路徑
saveDb:保存數據庫名稱,多個數據庫用逗號分隔spa

二、腳本文件:rest

#!/bin/sh

#db_backups_conf.txt文件路徑
db_backups_conf="/wocloud/shell/dm_db_backups_conf.txt"

#判斷文件是否存在
if [ -f "${db_backups_conf}" ];then
    
    echo $(date +'%Y-%m-%d %H:%M:%S')" 數據庫配置信息文件存在,開始進行數據備份"

    #獲取等號前內容,做爲map中的Key值
    dbArrOne=($(awk -F'[=]' '{print $1}' ${db_backups_conf} ))
    
    #獲取等號後內容,做爲map中的value值
    dbArrTwo=($(awk -F'[=]' '{print $2}' ${db_backups_conf}))

    #建立一個空map
    declare -A map=()
    
    #經過循環,將db_backups_conf配置文件中的信息存儲在map中
    for((i=0;i<${#dbArrOne[@]};i++))
    do
        map[${dbArrOne[i]}]=${dbArrTwo[i]}
    done    

    #獲取備份數據庫
    saveDbStr=${map["saveDb"]}
    
    #獲取默認的字符串分隔符
    old_ifs="$IFS"
    
    #設置字符串分隔符爲逗號
    IFS=","

    #將用戶名的value值的字符串進行分隔,獲取一個數組
    saveDbArr=($saveDbStr)

    #將字符串的分隔符從新設置爲默認的分隔符
    IFS="$old_ifs"

    #獲取當前年月日
    saveday=$(date +%Y%m%d)

    #獲取超出備份天數的年月日
    delday=$(date -d ${map["backupsFileDay"]}' days ago' +%Y%m%d)


    #遍歷要備份的用戶名,刪除兩天前備份的數據文件
    for delDb in ${saveDbArr[@]};
    do
        echo $(date +'%Y-%m-%d %H:%M:%S')" 刪除文件:"${map["backupsFileStr"]}/${delDb}_database_${delday}.dmp

        rm -f ${map["backupsFileStr"]}/${delDb}_database_${delday}.dmp
    done

    #遍歷要備份的數據庫,備份數據文件
    for saveDb in ${saveDbArr[@]};
    do
        echo $(date +'%Y-%m-%d %H:%M:%S')" 備份數據庫:"${saveDb}
           ${map["dexpStr"]} USERID=${map["username"]}/${map["password"]}@${map["ipStr"]}:${map["portNumber"]} FILE=${saveDb}_database_${saveday}.dmp LOG=${map["logsFileStr"]}/${saveDb}_database_${saveday}.txt SCHEMAS=${saveDb} DIRECTORY=${map["backupsFileStr"]}
    done    
    
    echo $(date +'%Y-%m-%d %H:%M:%S')" 數據備份完畢,腳本執行完畢"

else
    echo "文件不存在"
fi

注意:注意代碼開頭中讀取配置文件的路徑,這個位置可能不同,須要進行適當修改。日誌

三、定時任務:code

Linux中的sh腳本定時任務,能夠經過crontab進行管理,若是linux中沒有安裝crontab,須要進行安裝:

安裝命令:

yum -y install vixie-cron
yum -y install crontabs

服務管理

service crond start     //啓動服務
service crond stop      //關閉服務
service crond restart   //重啓服務
service crond reload    //從新載入配置
service crond status    //查看crontab服務狀態

加入開機自啓

chkconfig crond on

(1)設定定時任務:

crontab -e 編寫定時任務表達式

例如:

1 */3 * * * /wocloud/shell/fileBackupsScript.sh &>/wocloud/shell/fileBackupsLogs/fileBackupsEcho_`date +\%Y-\%m-\%d-\%H-\%M-\%S`.txt 2>&1

定時表達式+腳本絕對路徑+腳本打印信息日誌輸出絕對路徑(必定要有日誌輸出記錄,方便之後進行查看)

(2)從新啓動crond

service crond restart;

相關文章
相關標籤/搜索