1. 程式人生 > >mysql定時任務event——清理過期數據 (轉)

mysql定時任務event——清理過期數據 (轉)

etc sta 大於 reserve mysq log del events clas

1.查詢是否開啟事件調度

SHOW VARIABLES LIKE event_scheduler‘;

2.開啟事件調度

臨時: SET GLOBAL event_scheduler = 1;

永久: vim /etc/my.cnf event_scheduler=ON

[mysqld]
event_scheduler=ON //這一行加入mysqld標簽下

3.創建p_del_count存儲過程。 接收傳入參數30並執行刪除數據操作,刪除大於30天的數據。

drop procedure if exists p_del_count; 
create procedure p_del_count(IN `date_inter` INT)  
BEGIN  
delete from t_req_log where (TO_DAYS(NOW()) - TO_DAYS(FROM_UNIXTIME(unix_timestamp(time),%Y%m%d‘))) >=date_inter;  
END;

BEGIN
  delete from t_warnmsg where (TO_DAYS(NOW()) - TO_DAYS(FROM_UNIXTIME(unix_timestamp(warntime),‘%Y%m%d‘))) >=date_inter;
   delete from t_collection where (TO_DAYS(NOW()) - TO_DAYS(FROM_UNIXTIME(unix_timestamp(colltime),‘%Y%m%d‘))) >=date_inter;
END

4.創建定時任務 從2018-05-15 00:00:00起每一天執行一次p_del_count這個存儲過程,並將參數傳給 p_del_count存儲過程

drop event if exists e_del_t_req_log;
create event e_del_t_req_log 
on schedule every 1 day starts 2018-05-15 00:00:00on completion not preserve enable do call p_del_count (30);

on schedule every 1 day starts ‘2019-05-3 00:00:00‘

5.查看已有定時事件任務 SHOW EVENTS;

6.事件的開啟與關閉 開啟某事件:ALTER EVENT e_del_t_req_log

ON COMPLETION PRESERVE ENABLE;

關閉某事件:ALTER EVENT e_del_t_req_log ON COMPLETION PRESERVE DISABLE;

mysql定時任務event——清理過期數據 (轉)