定时清理mysql表数据

  因为我们开发的系统,需要记录操作日志,短短的时间内,整个日志表就会有很多数据进来,有些数据基本没有啥用了 ,于是需要写一个定时任务来定期处理这些数据(业务要求数据只保留三个月),所以我开始第一时间想到两个方案:

  一:是在代码中写一个定时器,每天12点自动删除日志表中的数据

  二:是使用mysql 自带的事件,

 最后综合考虑下 还是使用mysql的事件 因为代码少,并且是mysql自带的,那处理mysql数据再好不过了.下面记录下,真的超级简单,网上有很多版本,什么写一个存储过程, 在写一个事件定时调存储过程删除,我觉得对我而言蛮麻烦的,我就三行代码搞定.(针对自己的业务需求,找一个最合适的)

 

1.打开mysql ,查看你的定时任务开关是否开启

SHOW VARIABLES LIKE 'event_scheduler'

  

  如果value是off 需要你打开一下

SET GLOBAL event_scheduler = ON

2.写定时任务的事件

DELIMITER $$
DROP EVENT IF EXISTS deleteLog;
CREATE EVENT deleteLog
ON SCHEDULE EVERY 300 SECOND
ON COMPLETION PRESERVE
DO BEGIN
delete from sys_log where TO_DAYS(now())-TO_DAYS(log_time)>90;
END$$
DELIMITER ;

 详细说明:

 SCHEDULE EVERY 300 SECOND : 每5分钟执行一次

还有很多比如:   YEAR,MONTH,DAY,HOUR,MINUTE 或者SECOND (根据自己要求来)

sys_log  : 你要操作的表

log_time : 表中含有事件的字段(必须有含有时间的字段 不然没有办法对比)

TO_DAYS(now())-TO_DAYS(log_time)>90 : 当前时间减去字段(log_time) 时间 大于 90 就 删除这些数据 

 

3.查看事件

  

select * from mysql.event;

 

4. 测试

    我当时特意修改看时间 删除10天前的数据  

没有事件前:

触发定时事件后:

可以看到我们的定时任务成功了!!!!

  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Apache DolphinScheduler(incubator,原EasyScheduler)是一个大数据分布式工作流任务调度系统,主要解决大数据研发过程中ETL处理错综复杂的依赖关系,而不能直观监控任务健康状态等问题。DolphinScheduler以DAG流式的方式将Task组装起来,可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及Kill任务等操作。 设计特点:一个分布式易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。 其主要目标如下: 1、以DAG图的方式将Task按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态 2、支持丰富的任务类型:Shell、MR、Spark、SQL(mysql、postgresql、hive、sparksql),Python,Sub_Process、Procedure等 3、支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill任务等操作 4、支持工作流优先级、任务优先级及任务的故障转移及任务超时告警/失败 5、支持工作流全局参数及节点自定义参数设置 6、支持资源文件的在线上传/下载,管理等,支持在线文件创建、编辑 7、支持任务日志在线查看及滚动、在线下载日志等 8、实现集群HA,通过Zookeeper实现Master集群和Worker集群去中心化 9、支持对Master/Worker cpu load,memory,cpu在线查看 10、支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计 11、支持补数 12、支持多租户 13、支持国际化 14、还有更多等待伙伴们探索

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值