天天看點

Linux下mysql定時任務備份資料庫腳本

建立備份目錄

Linux下mysql定時任務備份資料庫腳本

編寫備份腳本

#!/bin/bash
#資料庫使用者名稱
USER="root"
#資料庫密碼
PASSWORD="root123"
#資料庫
DATABASE="ywtg_new"
#ip
HOSTNAME="localhost"
#備份目錄
BACKUP_DIR=/home/ywtg/backup/
#日志檔案
LOGFILE=/home/ywtg/backup/ywtg_backup.log
#時間格式
DATE=`date '+%Y%m%d-%H%M'`
#DATE=`date '+%Y%m%d-%H%M'`
#備份檔案
DUMPFILE='ywtg'-$DATE.sql
#壓縮檔案
ARCHIVE='ywtg'-$DATE.sql.tgz
#組裝dump指令
OPTIONS="-h$HOSTNAME -u$USER -p$PASSWORD $DATABASE"

#判斷備份檔案存儲目錄是否存在,否則建立該目錄
if [ ! -d $BACKUP_DIR ] ;
then
        mkdir -p "$BACKUP_DIR"
fi

#開始備份之前,将備份資訊頭寫入日記檔案
echo " " >> $LOGFILE
echo " " >> $LOGFILE
echo "------------------" >> $LOGFILE
echo "BACKUP DATE:" $(date +"%y-%m-%d %H:%M:%S") >> $LOGFILE
echo "------------------" >> $LOGFILE

#切換至備份目錄
cd $BACKUP_DIR
#使用mysqldump 指令備份制定資料庫,并以格式化的時間戳命名備份檔案
/usr/local/mysql/bin/mysqldump $OPTIONS > $DUMPFILE
#判斷資料庫備份是否成功
if [[ $? == 0 ]]; then
    #建立備份檔案的壓縮包
    tar czvf $ARCHIVE $DUMPFILE >> $LOGFILE 2>&1
    #輸入備份成功的消息到日記檔案
    echo "[$ARCHIVE] Backup Successful!" >> $LOGFILE
    #删除原始備份檔案,隻需保 留資料庫備份檔案的壓縮包即可
    rm -f $DUMPFILE
else
    echo "Database Backup Fail!" >> $LOGFILE
fi
#輸出備份過程結束的提醒消息
echo "Backup Process Done"
#删除7天以上的備份
find /home/ywtg/backup/  -type f -mtime +7 -exec rm {} ;      

使用crontab建立定時任務

crontab -e 進入編輯視窗

Linux下mysql定時任務備份資料庫腳本

編輯完成之間wq儲存退出,腳本自動生效

任務說明

  • 00 02 * * * 每天淩晨兩點執行一次

如果需要多個定時任務,直接crontab -e 添加需要執行得腳本就好了

crontab -l 檢視任務清單

Linux下mysql定時任務備份資料庫腳本

\

crontab -r 之間删除任務,沒有提示,謹慎操作

crond和crontab

crond和crontab是密不可分的

crond

crond 是 Linux 系統下用來周期性地執行某種任務或等待處理某些事件的一個守護程序。當安裝完成作業系統後,預設會安裝此服務工具,并且會自動啟動 crond 程序,crond 程序每分鐘會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。

crontab

linux提供給使用者自己定義任務,crontab依賴crond程序,crond程序每分鐘回去掃描crontab中的定時任務

檢視crond程序的狀态,預設是根據系統自啟動的

Linux下mysql定時任務備份資料庫腳本

檢視結果

備份的資料sql

Linux下mysql定時任務備份資料庫腳本

備份的日志檔案

Linux下mysql定時任務備份資料庫腳本
Linux下mysql定時任務備份資料庫腳本

還有備份檔案,隻需要解壓tgz包,然後使用mysql指令去還原就可以了

/home/ywtg/backup/ywtg-20220509-1533.sql