1. 建立存儲過程
比如存儲過程是,刪除15天前的數據:
del_half_month_before_data:
DELIMITER //
BEGIN
DECLARE date_string varchar(100);
DECLARE? date_string2 varchar(100);
DECLARE? date_string3 varchar(100);
SELECT DATE_SUB(CURDATE(), INTERVAL 30 DAY) INTO date_string;
SELECT CONCAT(date_string," 00:00:00") INTO date_string2;
SELECT UNIX_TIMESTAMP(DATE(date_string2)) INTO date_string3;
DELETE FROM `mytable` WHERE `timestamp` < date_string3;
END//
查看剛才創建的存儲過程:show create procedure del_half_month_before_data;
執行剛才創建的存儲過程:call del_half_month_before_data();
2. 檢查mysql定時器是否開 & 啟停定時器 & 啟停事件
查看event是否開啟 : SHOW VARIABLES LIKE '%event_sche%'; 或 show variables like 'event_scheduler';
將事件計劃開啟 :SET GLOBAL event_scheduler = 1;? 或 set global event_scheduler=1;
將事件計劃關閉 :SET GLOBAL event_scheduler = 0; 或 set global event_scheduler=1;
關閉事件任務 :ALTER EVENT eventName ON COMPLETION PRESERVE DISABLE;
開啟事件任務 :ALTER EVENT eventName ON COMPLETION PRESERVE ENABLE;
查看事件任務 : SHOW EVENTS;
3. 定時執行存儲過程,比如每天凌晨1點執行
DROP EVENT IF EXISTS event_del_half_month_before_data;
CREATE EVENT event_del_half_month_before_data on schedule EVERY 1 DAY starts '2017-01-01 01:00:00' do call del_half_month_before_data();
####親測有效,good####
參考:
1. mysql設置定時任務
2. http://blog.csdn.net/s445320/article/details/51897179?_t=t
3. http://www.cnblogs.com/chenpi/p/5137310.html
4. http://blog.sina.com.cn/s/blog_70207ec20101nzf2.html