1. 程式人生 > >Linux學習_Shell程式設計綜合案例(定時維護資料庫)

Linux學習_Shell程式設計綜合案例(定時維護資料庫)

要求:

  1. 每天凌晨 2:10 備份 資料庫 atguiguDB 到 /data/backup/db
  2. 備份開始和備份結束能夠給出相應的提示資訊
  3. 備份後的檔案要求以備份時間為檔名,並打包成 .tar.gz 的形式,比如:2018-03-12_230201.tar.gz
  4. 在備份的同時,檢查是否有10天前備份的資料庫檔案,如果有就將其刪除。

步驟

  1. cd 到 /usr/sbin/ 下,我選擇把指令碼寫在這裡
  2. vim mysql_db_backup.sh
  3. 寫指令碼,指令碼如下:
#!/bin/bash

#先確定備份的路徑
DATETIME=$(date +%Y_%m_%d_%H%M%S)
#可以輸入變數進行除錯
#echo $DATETIME

echo "======開始備份======"
echo "======備份的路徑是:$BACKUP ======"

#主機
HOST=localhost
#使用者名稱
DB_USER=root
#密碼
DB_PWD=1230
#備份資料庫
DATABASE=DB1
#建立備份路徑,如果備份的路徑資料夾存在就使用,否則就建立
[ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"
#執行mysql的備份資料庫的指令
#打包備份檔案
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
#刪除臨時目錄
rm -rf $BACKUP/$DATETIME

#刪除10天前的備份檔案,按時間名字查詢,查到後刪除
#-exec:執行
# {} \ 是固定寫法,就是把前面找到的交給rm刪除
find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "======備份檔案成功======"

  1. 將指令碼設定到crond執行
[[email protected] sbin]# crontab -e

進入到crontab中後進行配置:

10 2 * * * /usr/sbin/mysql_db_backup.sh

  1. wq儲存就ok了