mysql定时任务实现的方法(一)

前言:在项目中碰到需要实行mysql定时任务,在查询资料和自己实验后暂时发现有两种可行的方法,本文先介绍第一种方法——利用linux自带的cron工具来实现定时任务功能。

cron服务

在LINUX中,守护进程cron可以在无需人工干预的情况下周期性地运行作业。cron读取一个或多个配置文件,这些配置文件称为“crontab”,是“cron table”的简写,其中包含了所需要执行的命令行及其调用时间。

关于该命令的详细介绍及使用可以参考这篇文章:Crontab定时任务配置

利用cron实现mysql定时任务步骤

1.目录/etc/cron.d/ 一般用来存放任何要执行的crontab文件或脚本,所以我们在这个目录下创建文件mysql.cron,其内容为:

/usr/local/mysql/bin/mysql -uroot -proot mnf -e "truncate table mnf.history"

其中mnf代表数据库名称,-e参数后面接的是需要执行的mysql语句。并且注意其中mysql执行文件的路径一定要是绝对路径,否则不会执行,因为cron执行的默认环境变量是PATH=/sbin:/bin:/usr/sbin:/usr/bin。

2.修改crontab文件权限:

chmod 755  /etc/cron.d/mysql.cron

3.将mysql的定时任务添加到/etc/crontab中

0  0  1  *  * root /etc/cron.d/mysql.cron

这行命令的意思是,每月1号的0时0分就会以root身份去调用/etc/cron.d/mysql.cron这个作业。关于crontab文件的其他例子同样可以参考前面那篇文章。

4.重启cron服务,让新添加的作业生效

/etc/init.d/crond restart

5.重启后,系统就会在每月1号的0时0分清空mnf.history表的记录。

crontab的日志记录

默认情况下,crontab执行作业的日志记录在/var/log/cron里,如下所示:

Sep 19 16:13:49 localhost crond[5202]: (CRON) STARTUP (1.4.4)
Sep 19 16:13:49 localhost crond[5202]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 32% if used.)
Sep 19 16:13:49 localhost crond[5202]: (CRON) INFO (running with inotify support)
Sep 19 16:13:49 localhost crond[5202]: (CRON) INFO (@reboot jobs will be run at computer's startup.)
Sep 19 16:14:01 localhost CROND[5214]: (root) CMD (/etc/cron.d/mysql.cron)

可以看到这个日志记录的比较简单,只是记录了什么时候执行了什么作业,如上面的最后一句。所以如果我们想知道作业执行过程中出现了什么错误,可以将/etc/cron.d/mysql.cron修改成如下:

/usr/local/mysql/bin/mysql -uroot -proot mnf -e "truncate table mnf.history" >> /var/cron.log 2>&1

这样便可以把错误输出和标准输出都记录到cron.log中。

你可能感兴趣的:(DB)