1.創建並編輯文件 /usr/sbin/bakmysql.sh,命令:
vi /usr/sbin/bakmysql.sh
內容如下:
1 db_user="root" 2 db_passwd="root" 3 db_name="db_test" 4 # the directory for story your backup file.you shall change this dir 5 backup_dir="/usr/software/backup/mysqlbackup" 6 # date format for backup file (dd-mm-yyyy) 7 time="$(date +"%Y%m%d%H%M%S")" 8
9 mysqldump -u$db_user -p$db_passwd $db_name > "$backup_dir/$db_name"_"$time.sql"
注意 -p 和 $db_passwd之間沒有空格,不然$db_passwd會被當做參數[數據庫名]來解析
2.修改文件bakmysql.sh屬性,使其可執行;
chmod 777 /usr/sbin/bakmysql.sh
或 chmod +x /usr/sbin/bakmysql.sh
腳本文件必須是:可讀,可執行。如果不可讀,crontab就不能讀取腳本內容,更談不上執行成功。
3.創建定時任務
#進入編輯界面,內容如下
00 23 * * * /usr/sbin/bakmysql.sh
4.則重啟下crond服務,命令為
service crond start //啟動服務 service crond stop //關閉服務 service crond restart //重啟服務 service crond reload //重新載入配置 service crond status //查看服務狀態
mysql備份文件定期刪除
------------------------------附加一個mysql備份定時刪除--------------------------
1.准備一個腳本文件 rmbak.sh
backup_dir="/data/backup222/4a_db_backup" #刪除七天之前的備份 #find $backup_dir -name $db_name"*.sql.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1 #刪除一分鍾之前的備份 find $backup_dir -name $db_name"*.sql.gz" -type f -mmin +1 -exec rm -rf {} \; > /dev/null 2>&1
-type f 表示查找普通類型的文件,f 表示普通文件,可不寫
-mtime +7 按照文件的更改時間來查找文件,+7表示文件更改時間距現在7天以前;如果是-mmin +7表示文件更改時間距現在7分鍾以前
-exec rm {} ; 表示執行一段shell命令,exec選項后面跟隨着所要執行的命令或腳本,然后是一對{ },一個空格和一個\,最后是一個分號;
/dev/null 2>&1 把標准出錯重定向到標准輸出,然后扔到/DEV/NULL下面去。通俗的說,就是把所有標准輸出和標准出錯都扔到垃圾桶里面;其中的& 表示讓該命令在后台執行
2.編輯crontab -e,添加下面,每分鍾,如,每分鍾一次刪除
*/1 * * * * /data/backup222/rmbak.sh
3.重啟:service crond restart
注意,rmbak.sh文件的權限,r,保證 定時任務能讀取腳本內容,x,保證腳本有可執行權限

附錄: Crontab 格式
分 時 日 月 周 執行命令 第 1 列分鍾 1~59,每分鍾用 * 或者*/1表示,整點分鍾數為00或0 第 2 列小時 1~23(0 表示 0 點) 第 3 列日 1~31 第 4 列月 1~12 第 5 列星期 0~6(0 表示星期天) 第 6 列要運行的命令 0 3 * * * /backup.sh,此命令表示在每天的凌晨三點執行一次腳本,可自行調整時間
