天天看點

Linux定時備份MySQL資料庫腳本

之前記錄下了window系統備份遠端MySQL資料庫的定時備份腳本(想要了解的可以去看看> windows壓縮備份MySQL資料庫),Linux系統的忘記記錄了。這次把它也儲存下來。

腳本内容非常簡單,主要是利用MySQL的備份系統來做這件事。

#!/bin/bash
mysqldump -hlocalhost -u[username] -p[password] [database] | gzip > /backup/database_$(date +%Y%m%d_%H%M%S).sql.gz

workdir="/backup/"

do_delete()
{
	file_name=$(find $workdir -name '*.sql.gz' -and -mtime +7  -type f -print)
    	echo file name is ${file_name}

        find $workdir -name '*.sql.gz' -and -mtime +7 -type f -delete
        if [ $? -eq 0 ];then
            echo $(date) delete $(basename ${file_name}) success!             
        else
            echo $(date) delete ${file_name} FAILD!
         fi

}
do_delete
           

在根目錄建立一個

backup

檔案夾,将腳本放在這個檔案夾内,給腳本可執行權限。

下面我們要用到的是Linux的

crontab

指令。

crontab

常用參數如下:

  • -e

    編輯工作表
  • -l

    列出工作表中的指令
  • r

    删除工作表
  • u [username]

    操作某使用者的工作表,省略則預設是目前使用者的工作表

使用

crontab -e

編輯工作表,在工作表中加入下面的内容,讓腳本每天淩晨3點執行。

0 3 * * * /backup/bakdb.sh
           

内容的規則如下:

.---------------- minute (0 - 59)
 |  .------------- hour (0 - 23)
 |  |  .---------- day of month (1 - 31)
 |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
 |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
 |  |  |  |  |
 *  *  *  *  * user-name 指定其他使用者排程,如果不需要則不指定
           

*

表示每年每月每天每時每分都執行該任務。

任務添加好了之後可以将

crond

服務重新開機:

service crond restart

繼續閱讀