shell程式設計綜合案例,定時維護資料庫
阿新 • • 發佈:2018-12-11
shell程式設計綜合案例,定時維護資料庫
需求/要求
1)每天凌晨 2:15 備份 資料庫 testDB 到 /data/backup/db
2)備份開始和備份結束能夠給出相應的提示資訊
3)備份後的檔案要求以備份時間為檔名,並打包成 .tar.gz 的形式,比如:
2018-12-05_021501.tar.gz
4) 在備份的同時,檢查是否有 10 天前備份的資料庫檔案,如果有就將其刪除
編寫一個shell指令碼(mysql_db_backup.sh) 指令碼原始碼如下:
#!/bin/bash #完成資料庫的定時備份 #備份的路徑 BACKUP=/data/back/db #當前時間作為檔名 DATETIME=$(date +%Y_%m_%d_%H%M%S) #可以通過輸出變數來除錯 echo $DATETIME #使用變數的時候,也可以用{}花括號的方式把變數名包起來,如下: echo ${DATETIME} echo "---------------------開始備份資料庫---------------------" echo "---------------------備份的路徑是$BACKUP/$DATETIME.tar.gz---------------------" #主機ip地址 HOST=localhost #資料庫使用者名稱 DB_USER=root #資料庫密碼 DB_PWD=root #資料庫名 DATABASE=testDB #建立備份路徑 #如果備份的資料夾路徑存在的話,就直接使用,否則就建立 [ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}" #執行mysql的備份資料庫的指令 mysqldump -u${DB_USER} -p${DB_PWD} --host=${HOST} ${DATABASE} | gzip > ${BACKUP}/${DATETIME}/${DATETIME}.sql.gz #打包備份檔案 cd ${BACKUP} tar -zcvf ${DATETIME}.tar.gz ${DATETIME} #刪除臨時目錄 rm -rf ${BACKUP}/${DATETIME} #刪除10天前的備份檔案 find ${BACKUP} -mtime +10 -name "*.tar.gz" -exec rm -rf {} \; echo "-------------------------備份成功-------------------------"
截圖如下:
執行mysql_db_backup.sh指令碼,我們測試一下!
配置一下定時任務排程,命令列輸入crontab -e
每天凌晨 2:15 備份 資料庫 testDB 到 /data/backup/db 大家看下面的截圖
配置定時任務排程成功!這樣的話,每天的凌晨 2:15就會自動的備份資料庫