Linux下mysql定時任務備份資料庫指令碼
阿新 • • 發佈:2022-05-09
建立備份目錄
編寫備份指令碼
#!/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 進入編輯視窗
編輯完成之間wq儲存退出,指令碼自動生效
任務說明
- 00 02 * * * 每天凌晨兩點執行一次
如果需要多個定時任務,直接crontab -e 新增需要執行得指令碼就好了
crontab -l 檢視任務列表
\
crontab -r 之間刪除任務,沒有提示,謹慎操作
crond和crontab
crond和crontab是密不可分的
crond
crond 是 Linux 系統下用來週期性地執行某種任務或等待處理某些事件的一個守護程序。當安裝完成作業系統後,預設會安裝此服務工具,並且會自動啟動 crond 程序,crond 程序每分鐘會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。
crontab
linux提供給使用者自己定義任務,crontab依賴crond程序,crond程序每分鐘回去掃描crontab中的定時任務
檢視crond程序的狀態,預設是根據系統自啟動的
檢視結果
備份的資料sql
備份的日誌檔案
還有備份檔案,只需要解壓tgz包,然後使用mysql命令去還原就可以了
/usr/local/mysql/bin/mysql -hlocalhost -uroot -proot123 ywtg_back < /home/ywtg/backup/ywtg-20220509-1533.sql