linux设置mysql定时任务_Linux下如何实现Mysql定时任务

假设前提:每天晚上10点到早上5点,每10分钟定时执行存储过程。

实现方式:

第一种是利用mysql本身实现,制定event定时任务,可以借助navicat for mysql或其他数据库开发工具去做;

第二种实现方式是利用linux的定时任务,这个是利用linux系统自带任务管理工具实现的。

一、mysql中event定时任务的相关命令,

1.查看event是否启用:

select @@event_scheduler;

show variables like 'event%';

2.开启定时任务:

set global event_scheduler = 1;

set global event_scheduler = on;

3.建立定时任务:

drop event if exists job_alarm;

create event job_alarm

on schedule every 10 minute

do

begin

if(date_format(current_time(),'%h')>22 || date_format(current_time(),'%h')<5) then

call pro_alarm();

end if;

end

4.建立存储过程:

drop procedure if exists pro_alarm;

create procedure pro_alarm()

begin

declare userid varchar(32);

#这个用于处理游标到达最后一行的情况

declare s int default 0;

#声明游标cursor_name(cursor_name是个多行结果集)

declare cursor_data cursor for

select tmp.user_id

from (

select

e.user_id,

max(e.time_gmt) time_gmt

from events e

group by e.user_id

having max(e.time_gmt) < unix_timestamp() - 60 * 30

and max(e.time_gmt) > unix_timestamp() - 60 * 60 * 24) tmp

inner join events t on tmp.user_id = t.user_id

and tmp.time_gmt = t.time_gmt

where type_id != '34001';

#设置一个终止标记

declare continue handler for sqlstate '02000' set s = 1;

open cursor_data;

#获取游标当前指针的记录,读取一行数据并传给变量a,b

fetch cursor_data

into userid;

#开始循环,判断是否游标已经到达了最后作为循环条件

while s <> 1 do

insert into events_notification values (null, sysdate(), unix_timestamp(sysdate()),

unix_timestamp(sysdate()), '00000', userid, '1', '0');

#读取下一行的数据

fetch cursor_data

into userid;

end while;

#关闭游标

close cursor_data;

end;

二、利用linux的定时任务,

linux定时任务基本命令:

查看定时任务:crontab -l

编辑定时任务:crontab -e

*/10 22-23,0-5 * * *   mysql -u用户名 -p密码 -e "use db_name;call pro_alarm();"

或者把use db_name;call pro_alarm();存到sql脚本中,编辑定时任务如下:

*/10 22-23,0-5 * * *   mysql -u用户名 -p密码 < /application/job_mysql.sql

总结

以上所述是小编给大家介绍的linux下如何实现mysql定时任务,希望对大家有所帮助

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值