linux下使用crontab如何实现mysql数据库每天自动备份定时备份,并只保留近7天数据文件

1. 编辑shell脚本 (备份&清理)

#!/bin/bash
#在此设置要备份的数据库名,以TEST为例
DBNAME="TEST" 
#备份数据临时存放位置,备份完成之后自动删除.			
BACKDIR="/home/root/backup/" 
#获取系统时间
DATE=`date +%Y%m%d`
#备份文件名以时间命名	
FILENAME=dump_${DATE}.sql 
#进入备份目录
cd ${BACKDIR} 
#备份数据库并追加日志
mysqldump -uroot -proot --databases TEST > ${BACKDIR}${FILENAME} >> db_backup.log
#删除近7天文件
find ${BACKDIR} -mtime +7 -name "*.sql" -exec rm -rf {} \;

2. 将脚本加入crontab自动执行计划

添加计划

crontab -e

加入一行:

#每天晚上11点半, 执行对应路径下的脚本.
30 23 * * *  /home/root/backup.sh

保存退出(vim命令)

3. Cron 各项的描述

以下是 crontab 文件的格式:

{minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script}
minute: 区间为 0 – 59
hour: 区间为0 – 23
day-of-month: 区间为0 – 31
month: 区间为1 – 12. 1 是1月. 12是12月.
Day-of-week: 区间为0 – 7. 周日可以是0或7.

4.Crontab 示例

  1. 在 12:01 a.m 运行,即每天凌晨过一分钟。这是一个恰当的进行备份的时间,因为此时系统负载不大。

    1 0 * * * /root/bin/backup.sh
    
  2. 每个工作日(Mon – Fri) 11:59 p.m 都进行备份作业。

    59 11 * * 1,2,3,4,5 /root/bin/backup.sh
    

    下面例子与上面的例子效果一样:

    59 11 * * 1-5 /root/bin/backup.sh
    
  3. 每5分钟运行一次命令

    */5 * * * * /root/bin/check-status.sh
    
  4. 每个月的第一天 1:10 p.m 运行

    10 13 1 * * /root/bin/full-backup.sh
    
  5. 每个工作日 11 p.m 运行。

    0 23 * * 1-5 /root/bin/incremental-backup.sh
    

4. crontab常用的命令

service crond start    //启动服务
service crond stop     //关闭服务
service crond restart  //重启服务
service crond reload   //重新载入配置
service crond status   //查看服务状态 
crontab –e             //往 cron 中添加一个作业
crontab –e             //修改 crontab 文件. 如果文件不存在会自动创建。 
crontab –l             //显示 crontab 文件。 
crontab -r             //删除 crontab 文件。
crontab -ir            //删除 crontab 文件前提醒用户
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章