实战MYSQL数据库中配置时间调度器(继定时操作)

在项目中经常会遇到历史数据删除备份的事情,最近参加的一个移动项目使用MYSQL做数据存储,用户正好提到类似的需求。


回想之前在网站上看到过MYSQL中可以支持配置时间调度器,使用这个MYSQL自带的功能来实现用户的要求真是再合适不过了。


需求如下:

px_***1 保存推送消息记录,用户要求每日定时删除5天前的.根据创建时间.
px_***2 记录管理员重要操作日志,用户要求每日定时删除60天前的 .根据创建时间.
px_***3 刷卡记录,删除1年以前的.根据创建时间

哈,使用MYSQL的时间调度器来实现这个需求,so easy!!!

按照惯例,搜索MYSQL时间调度器的相关资料,开工。。。。

链接数据库这些基本操作这里略过:

1.查看当前数据库是否启用当前调度事件:
    
SHOW VARIABLES LIKE 'event_scheduler';

event_scheduler   ON<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">  </span>
2.如果没有开启,使用如下命令

SET GLOBAL event_scheduler = ON;
3.创建对应额度时间调度事件

//删除5天前的
CREATE EVENT px_***1_delete ON SCHEDULE EVERY 1 DAY DO delete from px_pushmessage where create_time<= DATE_SUB(CURDATE(), INTERVAL 5 DAY);
//删除60天前的
CREATE EVENT px_***2_delete ON SCHEDULE EVERY 1 DAY DO delete from px_logs where create_time<= DATE_SUB(CURDATE(), INTERVAL 60 DAY);
//删除1年以前的
CREATE EVENT px_***3_delete ON SCHEDULE EVERY 1 DAY DO delete from px_doorrecord where dt<= DATE_SUB(CURDATE(), INTERVAL 1 YEAR);

4.查看当前已有的event调度

(1)查询mysql.event表;
(2)通过SHOW EVENTS命令;

5.临时关闭开启事件

1) 临时关闭事件
 ALTER EVENT e_test DISABLE;
2) 开启事件
 ALTER EVENT e_test ENABLE;

备注:如果开启调度命令时遇到权限问题,如:access denied for user 'root'@'%' to database 'pxdb'; 1044

开启对应用户的Event_priv 权限,使用flush privileges;刷新权限后重新登录即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值