Linux中實現定時備份資料庫
阿新 • • 發佈:2018-12-30
需求分析
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
至此資料庫定時備份已經完成!