【Linux学习】使用crontab定期备份mysql数据库

首先查看 crontab是否安装
crontab -l # 列出当前的定时任务表

如果报 “command not found” ,就说明该crontab服务没有安装 如果报 “no crontab for ***” ,就说明已经安装crontab服务了, 不用再安装了

定时任务表的格式如下:

f1 f2 f3 f4 f5 program
  • 其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
  • 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其余类推
  • 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推
  • 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推
  • 当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其余类推

实例

* * * * * /bin/ls /app >>/app/log.log

每月内的每天的每个小时的每分钟,列出/app目录下的文件名到/app/log.log文件中。

* */6 * * * /bin/bash my.sh 

每隔6小时执行一次my.sh脚本

再来一个迷惑性的例子

每隔一小时执行一次任务

00 *   * * *  
00 */1 * * *  #与上面是相同的任务

上面的写法是正确的吗? 这个定时任务会在每天的,每小时的0分执行任务,但这并不符合我们的要求,比如11.35启动定时任务,那么会在12点整执行一次任务,依次13点整。。。,虽然也能满足要求,但这并不是真正意义的每隔一小时,那么正确的写法如何?

*/60 * * * * #每隔60分钟执行一次任务。
编辑定时任务表
crontab -e #执行文字编辑器来设定时程表
mysql定期备份任务

创建备份脚本my.sh

DATE=`date '+%Y-%m-%d'`  #形如2019-11-05
DATETIME=`date '+%Y-%m-%d-%H%M'`  #形如2019-11-05-1748
#首先判断目录是否存在,如果不存在则创建,存在则不再创建
if [ ! -d "/app/beifen/${DATE}" ]
    then
    #echo "目录不存在"
    mkdir /app/beifen/$DATE
fi
#在创建的目录下面创建日志文件
/app/mysql/bin/mysqldump -h localhost -uroot -p123456  test > /app/beifen/$DATE/$DATETIME.sql #mysql备份sql

使用crontab -e 将上面的脚本加入到定时任务

0 */6 * * * /bin/bash /app/beifen/my.sh #每隔6小时备份一次test数据库
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值