启用事件调度器(永久生效需修改my.cnf)
SET GLOBAL event_scheduler = ON;
⚠️ 如果你想让设置永久生效,请在 `my.cnf` 或 `my.ini` 文件中添加:
ini
[mysqld]
event_scheduler = ON
重启MySQL服务后生效。
📌 创建定时任务(事件)
语法如下:
sql
CREATE EVENT event_name
ON SCHEDULE AT TIMESTAMP | EVERY interval STARTS timestamp ENDS timestamp
DO
SQL_statement;
示例:每天凌晨2点执行一次清理操作
sql
CREATE EVENT clean_old_logs
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP + INTERVAL 1 DAY
DO
DELETE FROM logs WHERE created_at < DATE_SUB(NOW(), INTERVAL 30 DAY);
更多示例:
每5分钟执行一次:
sql
CREATE EVENT refresh_cache
ON SCHEDULE EVERY 5 MINUTE
DO
CALL update_statistics();
每月1号凌晨1点执行:
sql
CREATE EVENT monthly_report
ON SCHEDULE AT '2024-12-01 01:00:00'
DO
INSERT INTO monthly_summary SELECT * FROM daily_data WHERE month = MONTH(CURDATE());
带条件的事件(只在特定时间运行):
sql
CREATE EVENT backup_table
ON SCHEDULE EVERY 1 WEEK
STARTS '2024-10-01 02:00:00'
ENDS '2025-12-31 23:59:59'
DO
INSERT INTO backup_table SELECT * FROM original_table;
🔍 查看和管理事件
sql
查看所有事件
SELECT * FROM information_schema.events;