1. 程式人生 > >使用Crontab實現資料庫的定時備份和迴圈刪除

使用Crontab實現資料庫的定時備份和迴圈刪除

一、引言

在最近的工作中,遇到過幾次這樣的煩惱:同事在沒有任何說明和通知的情況下,自己改變了測試資料庫的結構和資料,導致我的程式本來執行挺好的,被這樣一搞,就GG了……檢視日誌才發現操作資料庫error……(我真的很鄙視這種行為的)……
被同事這樣一搞,資料庫的資料不對了,由於我們又沒有專門的運維,所以還是挺頭疼的事,所以就只能跳進這個坑,一起坑下去……

今天心血來潮,就想著寫個shell指令碼,讓伺服器每天定時的把資料庫備份一下,再把10天之前的備份檔案刪除,以防止資料庫不能恢復,所以就學習了一下linux的crontab任務排程。

二、Crontab的介紹

1、crontab命令

(1)基本語法:crontab  [選項]
(2)常用選項
		-e 編輯crontab定時任務
		-l 查詢crontab任務
		-r 刪除當前使用者所有的crontab任務

2、快速入門

(1)設定任務排程檔案:/usr/crontab
(2)設定個人任務調,執行命令:crontab –e
(3)接著輸入任務到排程檔案
		如:*/1 * * * * ls –l /etc/ > /tmp/to.txt 
意思:每小時的每分鐘執行 ls –l /etc/ > /tmp/to.txt命令

3、簡單案列:每隔1分鐘,就將當前的日期資訊,追加到 /tmp/mydate 檔案中

1)先編寫一個指令碼檔案:/home/mytask.sh
	date >> /tmp/mydate
2)給mytask.sh一個可執行許可權
	chmod 744 /home/mytask.sh
3)crontab -e (當儲存退出後就可以執行該任務了)
	* /1 * * * /home/mytask.sh
4) 去/tmp目錄下檢視mydate檔案

4、上述幾個*佔位符的說明
這裡寫圖片描述
5、特殊符號的說明
這裡寫圖片描述
6、特定時間執行任務案列
這裡寫圖片描述

三、資料庫定時備份指令碼實現

1、需求:

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

2、步驟

(1)在/home/shell/backup.sh下編寫shell指令碼
這裡寫圖片描述
(2)給backup.sh一個可執行許可權

		chmod 744 /home/shell/backup.sh

(3)crontab -e
這裡寫圖片描述
這裡寫圖片描述

(4)可以去/home/data/backup目錄下去檢視備份檔案

四、總結

其實對於crontab的使用很簡單,注意一下引數的意思就行了,主要是備份的shell指令碼。