SHOW VARIABLES LIKE 'event_scheduler';
SET GLOBAL event_scheduler = ON;
如果MySQL重启了,event会默认关闭,需要重新设置。
可在my.cnf配置文件里的【mysqld】增加 event_scheduler = ON(永久开启,设置后需要重启MySQL才会生效)
SET GLOBAL event_scheduler = OFF;
-- 创建定时任务
CREATE EVENT my_event
ON SCHEDULE
EVERY '1' DAY STARTS '2023-01-01 01:00:00'
DO CALL my_event()
解释:
1、create event my_event:定义事件名称,名为my_event
2、EVERY '1' DAY:周期定时的规则,每天执行一次
3、STARTS '2023-01-01 01:00:00':表示在具体执行开始时间,2023-01-01凌晨1点整开始执行
4、可选 on completion preserve disable:表示创建后并不开始生效。
5、do call my_event():该event(事件)的操作内容,这里是调用名为my_event()的存储过程
SELECT * FROM information_schema.EVENTS where EVENT_SCHEMA = 'my_db';
SELECT EVENT_NAME, EVENT_DEFINITION, INTERVAL_VALUE, INTERVAL_FIELD, STATUS FROM INFORMATION_SCHEMA.EVENTS;
SHOW CREATE EVENT MY_EVENT;
-- 修改定时任务 2点执行 调用my_event_bak()存储过程
ALTER EVENT my_event
ON SCHEDULE
EVERY '1' DAY STARTS '2023-01-01 02:00:00'
DO CALL my_event_bak()
//开启定时任务
alter event my_event on completion preserve enable;
//关闭定时任务
alter event my_event on completion preserve disable;
//删除定时任务
drop event my_event ;
参数单位有:second、minute、hour、day、week(周)、quarter(季度)、month、year
//每天执行1次
on schedule every 1 day
//每周执行1次
on schedule every 1 week
//每月执行1次
on schedule every 1 month
//每年执行1次
on schedule every 1 year
// 当前时间5天后执行
on schedule at current_timestamp() + interval 5 day
// 在2023年1月1日,凌晨1点整执行
on schedule at '2023-01-01 01:00:00'
//3天后开始每天都执行一次到下个月底结束
on schedule every 1 day starts current_timestamp() + interval 3 day ends current_timestamp() + interval 1 month
//从现在起每天执行,执行3天
on schedule every 1 day ends current_timestamp() + interval 3 day
1、https://zhuanlan.zhihu.com/p/619128134
2、https://www.jb51.net/database/28534927c.htm
如有不正确之处,还望指正!书写不易,觉得有帮助就点个赞吧!☺☺☺