1. 程式人生 > >shell程式設計綜合案例,定時維護資料庫

shell程式設計綜合案例,定時維護資料庫

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就會自動的備份資料庫