mysql事件调度器

1. 启用 MySQL 事件调度器

首先,确保 MySQL 的事件调度器功能是启用的。在 MySQL 命令行中运行以下命令:

SHOW VARIABLES LIKE 'event_scheduler';

如果返回结果为 OFF,则需要启用事件调度器。可以通过以下命令启用它:

SET GLOBAL event_scheduler = ON;

或者,您可以在 MySQL 配置文件 my.cnf 或 my.ini 中添加以下内容以使其在每次启动时都启用:

event_scheduler=ON

2. 创建事件

现在,您可以创建一个定时事件,它将在每天凌晨1点15分执行删除操作。您可以使用如下的 SQL 语句:

CREATE EVENT delete_old_data
ON SCHEDULE
    EVERY 1 DAY
    STARTS '2025-01-16 01:15:00'
DO
    DELETE FROM quota_data 
    WHERE created_at < UNIX_TIMESTAMP(DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y-%m-%d 00:00:00'));

解释:
ON SCHEDULE EVERY 1 DAY:表示此事件每天执行一次。
STARTS '2025-01-16 01:15:00':指定事件开始的时间是 2025年1月16日 01:15:00。
DELETE FROM quota_data WHERE created_at < UNIX_TIMESTAMP(DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y-%m-%d 00:00:00'));:这是您原始脚本中的删除操作,删除一个月前的记录。
注意:

UNIX_TIMESTAMP(DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y-%m-%d 00:00:00')):获取当前时间减去1个月的 Unix 时间戳。

3. 查看事件

您可以通过以下命令查看已创建的事件:

SHOW EVENTS;

4. 确保事件已启用

默认情况下,事件创建后会自动启用。如果需要手动启用或禁用事件,可以使用以下命令:

启用事件:

ALTER EVENT delete_old_data ENABLE;

禁用事件:

ALTER EVENT delete_old_data DISABLE;

5. 删除事件

如果不再需要此事件,可以删除它:

DROP EVENT delete_old_data;

总结
通过使用 MySQL 事件调度器,您可以实现每天凌晨1点15分执行删除操作,而不需要使用外部脚本。只需要确保事件调度器已启用,并创建一个每天执行的事件即可。

所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
本站部分内容收集于互联网,如果有侵权内容、不妥之处,请联系我们删除。敬请谅解!

已有 5 条评论

  1. 建议补充发展中国家案例,避免视角局限。
  2. 作者的情感表达细腻入微,让人在阅读中找到了心灵的慰藉。
  3. 跳出常规思维,角度独特,令人耳目一新。

添加新评论

  关于博主

当你发现自己的才华撑不起野心时,就请安静下来学习吧

  近期评论

  •  oevsgwftiw: 这篇文章不错!
  •  tptzkwumow: 这篇文章不错!
  •  higxcaasal: 这篇文章不错!
  •  gbkzxsngnm: 这篇文章不错!
  •  amozacdtyp: 作者的才华横溢,让这篇文章成为了一篇不可多得的艺术品。
  •  jpxtzzllvr: 内容的丰富性和深度让人仿佛置身于知识的海洋,受益匪浅。
  •  wjlsiejlxz: 作者的观点新颖且实用,让人在阅读中获得了新的思考和灵感。
  •  vlbfsfopgo: 建议引入反面案例,增强辩证性。
  •  qspdecneno: 跳出常规思维,角度独特,令人耳目一新。
  •  cuokmcjfrz: 建议控制调侃频率,避免消解主题深度。

生命要得到丰盛的收获,必需阳光;同时,也需要“雨”的浇灌。

人生应该树立目标,否则你的精力会白白浪费。

山涧的泉水经过一路曲折,才唱出一支美妙的歌。

如若不是为了一个人,谁肯枯守一座城。城市和爱情,总是有着这样那样的关系。我们会因为一个人,去到那座城,因为那是一座爱的城;我们也会因为一个人,离开一座城,那是一座绝望的伤城。

常求有利别人,不求有利自己。