-- 查询定时任务
SELECT * FROM information_schema.`EVENTS`
-- 创建每秒定时任务(存储过程名:back_history)
CREATE EVENT second_event
ON SCHEDULE EVERY 1 SECOND ON COMPLETION PRESERVE DISABLE
DO CALL back_history
-- 从2019-05-17 00:00:00起创建每天00:00:00点自动执行的定时任务
CREATE EVENT event_backup ON SCHEDULE EVERY 1 DAY STARTS '2019-05-17 00:00:00' ON
COMPLETION PRESERVE ENABLE
DO CALL back_history
常见周期定时规则
单位有:second,minute,hour,day,week(周),quarter(季度),month,year
on schedule every 1 second //每秒执行1次
on schedule every 2 minute //每两分钟执行1次
on schedule every 3 day //每3天执行1次
在具体某个时间执行–关键字 AT
on schedule at current_timestamp()+interval 5 day //5天后执行
on schedule at current_timestamp()+interval 10 minute //10分钟后执行
on schedule at '2016-10-01 21:50:00' //在2016年10月1日,晚上9点50执行
在某个时间段执行–关键字STARTS ENDS
on schedule every 1 day starts current_timestamp()+interval 5 day ends current_timestamp()+interval 1 month //5天后开始每天都执行执行到下个月底
on schedule every 1 day ends current_timestamp()+interval 5 day //从现在起每天执行,执行5天
-- 开启定时任务
ALTER EVENT second_event ON COMPLETION PRESERVE ENABLE;
-- 查看定时策略是否开启
SHOW VARIABLES LIKE '%event_sche%'
-- 开启关闭定时策略(OFF/ON)
SET GLOBAL event_scheduler=ON;
或:SET GLOBAL event_scheduler=1;
注意:以上的改法在数据库重启后将会恢复为原来状态,要想数据库重启后也可以让event_scheduler开启,则需要在配置文件my.ini的设置。修改如下,然后重启mysql服务即可。
[mysqld]
event_scheduler=ON //这一行加入mysqld标签下
如果数据库重启,除了需要SET GLOBAL event_scheduler=ON;
开启全局任务,还需要使用SHOW EVENTS 查询定时任务的status的状态是否为ENABLE
使用ALTER EVENT event_name ON COMPLETTON PRESERVE ENABLE;
-- 删除任务
DROP EVENT second_event