Shell腳本使用匯總整理——達夢數據庫備份腳本
Shell腳本使用的基本知識點匯總詳情見連接:
https://www.cnblogs.com/lsy-blogs/p/9223477.html
腳本分為三部分配置信息、腳本文件、定時任務;
1、配置信息:
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:保存數據庫名稱,多個數據庫用逗號分隔
2、腳本文件:
#!/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
注意:注意代碼開頭中讀取配置文件的路徑,這個位置可能不一樣,需要進行適當修改。
3、定時任務:
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;