mysql定时任务

浏览831

-- 查询定时任务

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




	        
			
	      

    


  • 暂无任何回答