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分执行删除操作,而不需要使用外部脚本。只需要确保事件调度器已启用,并创建一个每天执行的事件即可。
Tags : 本文未设置标签
所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
本站部分内容收集于互联网,如果有侵权内容、不妥之处,请联系我们删除。敬请谅解!
已有 5 条评论