CentOS定時備份mysql數據庫和清理過期備份文件

整個流程主要分爲:

  1. 創建備份數據庫的文件夾;
  2. 編寫備份數據庫以及清理過期文件的腳本;
  3. 編寫定時任務,定時啓動腳本

創建備份目錄

這裏演示的備份目錄是在/root/mysql_bak,可以根據自己想要把備份目錄放在哪個文件夾下更改對應路徑即可:

mkdir /root/mysql_bak

編寫腳本

進入mysql_bak目錄

cd /root/mysql_bak

創建backup.sh文件

vi backup.sh

#!/bin/bash
#*****************************************
#***********mysql自動備份壓縮*************
#filename=backup_dbfile.sh               *
#Author:fengbin                          *
#email:[email protected]      *
#*****************************************

#設置mysql登陸參數
User=root
Password=oneapm_si
echo "******root賬戶登錄成功*************"

#備份文件要保存的目錄
date=`date  +"%Y%m%d"`
Path=/app/mysql//backup_databases/$date
export PATH=$PATH:/app/mysql/mysql/bin
[ -d "$Path" ] || mkdir -p "$Path"
echo"***backup_path=/app/mysql/backup_databases/date successfully ***"

#備份和壓縮all databases 全量備份並壓縮
mysqldump -u$User -p$Password --opt --routines --flush-logs --single_transaction --master-data=2 --all-databases >$Path/$date.sql
cd $Path
tar czvf $date.sql.tar.gz $date.sql
echo "$date.sql.tar.gz備份成功!"

#刪除.sql 文件 只保留tar.gz壓縮文件
rm -rf $date.sql
echo "**************刪除.sql 文件 只保留tar.gz壓縮文件********"

# keep 7-days的數據
find /app/mysql/backup_mysql/backup_databases/*  -mtime +7  -exec rm -rf {} \;
echo "*************刪除7天前的目錄和tar.gz file************"

賦予權限,如果不給予權限的話,該腳本是無法運行的

chmod +x backup.sh

編輯定時任務

執行以下命令:crontab -e

#每週日零點執行數據庫備份腳本
0 0 * * 0 /root/mysql_bak/backup.sh

 

 Crontab 格式

分 時 日 月 周 執行命令
第 1 列分鐘 1~59,每分鐘用 * 或者*/1表示,整點分鐘數爲00或0
第 2 列小時 1~23(0 表示 0 點)
第 3 列日 1~31
第 4 列月 1~12
第 5 列星期 0~6(0 表示星期天)
第 6 列要運行的命令
0 3 * * * /root/mysql_bak/backup.sh,此命令表示在每天的凌晨三點執行一次腳本,可自行調整時間

重啓crondtab服務

編寫好定時任務後,需要重啓crondtab服務,命令如下:

service crond restart

發佈了85 篇原創文章 · 獲贊 347 · 訪問量 84萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章