You need to enable JavaScript to run this app.
文档中心
云数据库 MySQL 版

云数据库 MySQL 版

复制全文
下载 pdf
功能
设置定时和周期性任务
复制全文
下载 pdf
设置定时和周期性任务
本文介绍两种设置定时任务和周期性任务的方法:使用 MySQL 的事件调度器(Event Scheduler)以及使用数据库工作台(DBW)。​
使用 MySQL 的事件调度器(Event Scheduler)创建定时任务和周期性任务​
支持版本​
  • MySQL 5.7 版本,且内核小版本为 MySQL 5.7.44_20260215 及以上。​
  • MySQL 8.0 版本,且内核小版本为 MySQL 8.0.43_20260215 及以上。​
说明​
  • 若 MySQL 的版本不满足条件,则不推荐使用 Event Scheduler,因为旧版本中在主备节点切换后,主节点与备节点的 Event 状态会出现不同步的情况,从而致使 Event 调度失败。​
  • 若在 MySQL 的版本不满足条件时创建过 Event,之后将 MySQL 升级到了满足条件的版本,推荐在升级后将之前的定时任务全部删除重建,否则之前的定时任务仍会在主备节点切换后调度失败。​
使用说明​
设置参数​
在使用 Event Scheduler 之前,需要先将参数 event_scheduler 和 loose_event_replica_consistent 设置为 ON。​
创建定时任务​
创建定时任务的语法如下:​
​
CREATE EVENT [IF NOT EXISTS] event_name​
ON SCHEDULE schedule​
[ENABLE | DISABLE]​
DO​
sql_statement;​
​
其中 event_name 替换成任务名,sql_statement 替换成任务对应的 SQL 语句,schedule 替换成执行周期,具体用法见如下示例:​
  • 示例 1:单次任务( 1 小时后自动向日志表插入1 条记录)​
​
CREATE EVENT insert_log_once​
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR​
DO​
INSERT INTO my_log (message, created_at) VALUES ('任务已自动执行', NOW());​
​
  • 示例 2:周期性任务(每天自动清理一次超过 30 天的过期订单数据)​
​
CREATE EVENT purge_old_orders​
ON SCHEDULE EVERY 1 DAY​
DO​
DELETE FROM orders WHERE create_time < DATE_SUB(NOW(), INTERVAL 30 DAY);​
​
  • 示例 3:带有效期的周期性任务(从月初开始,每隔 1 小时汇总一次数据,直到月底结束)​
​
CREATE EVENT hourly_report​
ON SCHEDULE EVERY 1 HOUR​
STARTS '2024-01-01 00:00:00'​
ENDS '2024-01-31 23:59:59'​
DO​
CALL generate_hourly_report();​
​
查看定时任务信息​
执行以下语句查看所有定时任务:​
​
SHOW EVENTS;​
​
删除定时任务​
删除定时任务的语法如下:​
​
DROP EVENT [IF EXISTS] event_name​
​
需将 event_name 替换成待删除的任务的名称。​
使用 DBW 为 MySQL 创建定时任务和周期性任务​
在 DBW,可以为云数据库 MySQL 版创建定时或周期性任务。关于创建定时或周期性任务的详细信息,请参见任务管理。​
注意事项​
MySQL 原生的事件调度器(Event Scheduler)与数据库工作台(DBW)均可创建和管理定时任务及周期性任务。通过这两种方式创建的定时任务与周期性任务彼此独立,各自执行。建议您挑选其中一种方法使用,在使用其中一种方法管理定时任务和周期性任务之前,先清理另一种方法创建的定时任务和周期性任务。​
​
最近更新时间:2026.05.28 11:52:20
这个页面对您有帮助吗?
有用
有用
无用
无用