1. 程式人生 > >Linux中實現定時備份資料庫

Linux中實現定時備份資料庫

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

步驟:

1)先在 /usr/sbin 編寫一個 shell 指令碼

[[email protected] sbin]# vim mysql_db_backup.sh 

內容如下

 

#!/bin/bash

#完成資料庫的定時備份
#備份的路徑
BACKUP=/data/backup/db
#當前的時間作為檔名
DATETIME=$(date +%Y_%m_%d_%H%M%S)
#可以輸出變數除錯
#echo ${DATETIME}

echo "======開始備份======"
echo "======備份的路徑是 $BACKUP/$DATETIME.tar.gz"

#主機
HOST=localhost
#使用者名稱
DB_USER=root
#密碼
DB_PWD=123456
#備份資料庫名
DATABASE=mydatebase
#建立備份的路徑
#如果備份的路徑資料夾存在,就使用,否則就建立
[ ! -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天前的備份檔案 -mtime +10是10天前   exec是執行的意思  {} \為固定寫法 
find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "======備份檔案成功======"

編輯完成後儲存 :wq

2)給sh指令碼一個可執行許可權

chmod 744 mysql_db_backup.sh

3)通過crontab 進行 定時任務的設定

[[email protected] sbin]# crontab -e

編輯定時任務

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

編輯後儲存 :wq

至此資料庫定時備份已經完成!