转自 https://blog.csdn.net/qingzhong_he2010/article/details/44419845?utm_source=blogxgwz9
mysql存储过程,定时调用两种方式
一、mysql存储过程,通过事件定时调用,要求mysql版本5.1以上
/*==============================================================*/
/* 定义存储过程,操作过期行为日志,要求mysql版本5.1及以上 */
/*==============================================================*/
/** 定义存储过程,删除行为日志*/
delimiter //
CREATE PROCEDURE delete_action_log (in date_inter integer)
BEGIN
DELETE from tbl_Log_action where TO_DAYS(SYSDATE()) - TO_DAYS(createDate) > date_inter;
END;
//
/** 查看event是否开启 */
show variables like '%sche%';
/** 将事件计划开启 set global event_scheduler=1;*/
set global event_scheduler = ON;
show variables like '%sche%';
/** 创建操作event事件,从2015-03-17凌晨2点50操作删除6天前日志,每日循环执行 */
CREATE EVENT if not exists e_delete_action_log
on schedule every 1 DAY STARTS '2015-03-17 02:50:00'
on completion preserve enable
do call delete_action_log(60);
二、linux命令crontab脚本调用
执行调用存储过程,删除30日前的所有日志,每日凌晨调用3点
crontab -e
0 3 * * * /my/xmol/bin/delActionLog.sh
脚本:delActionLog.sh
#!/bin/sh
# mysql -u 数据库用户名 -p数据库登录密码 某个库<<EOF
mysql -u myxmol -pmyxmol2101169 xmol<<EOF
call delete_action_log2(30);
EOF
定义存储过程:delete_action_log2,其中createDate为表日志时间
delimiter //
CREATE PROCEDURE delete_action_log2 (in date_inter integer)
BEGIN
DELETE from tbl_Log_action where TO_DAYS(SYSDATE()) - TO_DAYS(createDate) > date_inter;
END;
//
/** 显示全部存储过程*/
SHOW PROCEDURE STATUS;
/** 显示全部事件*/
show EVENTS;
/** 删除存储过程-指定库下执行*/
DROP PROCEDURE IF EXISTS delete_action_log;
/** 删除事件-指定库下执行*/
DROP EVENT IF EXISTS e_delete_action_log;
————————————————
版权声明:本文为CSDN博主「俊逸vs小宝」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qingzhong_he2010/article/details/44419845