天天看點

Linux - 定時備份資料庫

【1】crontab定時任務

crontab指令被用來送出和管理使用者的需要周期性執行的任務,與windows下的計劃任務類似,當安裝完成作業系統後,預設會安裝此服務工具,并且會自動啟動crond程序,crond程序每分鐘會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。

文法

crontab(選項)(參數)      

選項

-e:編輯該使用者的計時器設定;
-l:列出該使用者的計時器設定;
-r:删除該使用者的計時器設定;
-u<使用者名稱>:指定要設定計時器的使用者名稱。      

參數

crontab檔案:指定包含待執行任務的crontab檔案。      

系統任務排程和使用者任務排程

Linux下的任務排程分為兩類:系統任務排程和使用者任務排程。

系統任務排程:系統周期性所要執行的工作,比如寫緩存資料到硬碟、日志清理等。在/etc目錄下有一個crontab檔案,這個就是系統任務排程的配置檔案。

/etc/crontab檔案包括下面幾行:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""HOME=/

# run-parts
51 * * * * root run-parts /etc/cron.hourly
24 7 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly      

前四行是用來配置crond任務運作的環境變量,第一行SHELL變量指定了系統要使用哪個shell,這裡是bash,第二行PATH變量指定了系統執行指令的路徑,第三行MAILTO變量指定了crond的任務執行資訊将通過電子郵件發送給root使用者,如果MAILTO變量的值為空,則表示不發送任務執行資訊給使用者,第四行的HOME變量指定了在執行指令或者腳本時使用的主目錄。

使用者任務排程:使用者定期要執行的工作,比如使用者資料備份、定時郵件提醒等。使用者可以使用 crontab 工具來定制自己的計劃任務。所有使用者定義的crontab檔案都被儲存在/var/spool/cron目錄中。其檔案名與使用者名一緻,使用者權限檔案如下:

/etc/cron.deny     該檔案中所列使用者不允許使用crontab指令
/etc/cron.allow    該檔案中所列使用者允許使用crontab指令
/var/spool/cron/   所有使用者crontab檔案存放的目錄,以使用者名命名      

【2】備份資料庫腳本

腳本連結如下:

mysql備份腳本

【3】添加Linux定時任務

crontab指令的功能是在一定的時間間隔排程一些指令的執行。

  • 定時任務文法:

文法規則如下圖所示:

Linux - 定時備份資料庫
  • 說明如下:
minute - 從0到59的整數 
hour - 從0到23的整數 
day - 從1到31的整數 (必須是指定月份的有效日期)
month - 從1到12的整數 (或如Jan或Feb簡寫的月份)
day of week - 從0到7的整數,0或7用來描述周日 (或用Sun或Mon簡寫來表示)
user-name - 表示使用者
command - 需要執行的指令(可用as ls /proc >> /tmp/proc或 執行自定義腳本的指令)      

在以上各個字段中,還可以使用以下特殊字元:

星号(*):代表所有可能的值,例如month字段如果是星号,則表示在滿足其它字段的制約條件後每月都執行該指令操作。
逗号(,):可以用逗号隔開的值指定一個清單範圍,例如,“1,2,5,7,8,9”
中杠(-):可以用整數之間的中杠表示一個整數範圍,例如“2-6”表示“2,3,4,5,6”
正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執行一次。同時正斜線可以和星号一起使用,
例如*/10,如果用在minute字段,表示每十分鐘執行一次。      
  • 定時任務常用指令:
service crond start //啟動服務
service crond stop //關閉服務
service crond restart //重新開機服務
service crond reload //重新載入配置
service crond status  //檢視crontab服務狀态
ntsysv              //檢視crontab服務是否已設定為開機啟動,執行指令:
chkconfig –level 35 crond on    //加入開機自動啟動      
  • 編寫定時任務指令如下:
vim /etc/crontab      

如下,在每天的17:20備份資料庫:

0 23 * * 6 root /opt/hh/mysql_bak.sh