Linux下实现Mysql定时任务的案例

51次阅读
没有评论

共计 1908 个字符,预计需要花费 5 分钟才能阅读完成。

自动写代码机器人,免费开通

丸趣 TV 小编给大家分享一下 Linux 下实现 Mysql 定时任务的案例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

假设前提:每天晚上 10 点到早上 5 点,每 10 分钟定时执行存储过程。

实现方式:

第一种是利用 Mysql 本身实现,制定 event 定时任务,可以借助 Navicat For Mysql 或其他数据库开发工具去做;
第二种实现方式是利用 linux 的定时任务,这个是利用 Linux 系统自带任务管理工具实现的。

一、Mysql 中 event 定时任务的相关命令,

1. 查看 event 是否启用:

SELECT @@event_scheduler; 
SHOW VARIABLES LIKE  event%

2. 开启定时任务:

set GLOBAL event_scheduler = 1; 
SET GLOBAL event_scheduler = ON;

3. 建立定时任务:

DROP EVENT IF EXISTS JOB_ALARM;
CREATE EVENT JOB_ALARM
 ON SCHEDULE EVERY 10 MINUTE
 BEGIN
 if(date_format(current_time(), %H ) 22 || date_format(current_time(), %H ) 5) THEN
 CALL PRO_ALARM();
 END IF;
END

4. 建立存储过程:

DROP PROCEDURE IF EXISTS PRO_ALARM; 
CREATE PROCEDURE PRO_ALARM() 
 BEGIN 
 DECLARE userId VARCHAR(32); 
 # 这个用于处理游标到达最后一行的情况  
 DECLARE s INT DEFAULT 0; 
 # 声明游标 cursor_name(cursor_name 是个多行结果集) 
 DECLARE cursor_data CURSOR FOR 
 SELECT tmp.USER_ID 
 FROM ( 
 SELECT 
 e.USER_ID, 
 MAX(e.TIME_GMT) TIME_GMT 
 FROM EVENTS e 
 GROUP BY e.USER_ID 
 HAVING MAX(e.TIME_GMT)   UNIX_TIMESTAMP() - 60 * 30 
 AND MAX(e.TIME_GMT)   UNIX_TIMESTAMP() - 60 * 60 * 24) tmp 
 INNER JOIN EVENTS t ON tmp.USER_ID = t.USER_ID 
 AND tmp.TIME_GMT = t.TIME_GMT 
 WHERE TYPE_ID !=  34001  
 # 设置一个终止标记  
 DECLARE CONTINUE HANDLER FOR SQLSTATE  02000  SET s = 1; 
 OPEN cursor_data; 
 # 获取游标当前指针的记录,读取一行数据并传给变量 a,b 
 FETCH cursor_data 
 INTO userId; 
 # 开始循环,判断是否游标已经到达了最后作为循环条件  
 WHILE s   1 DO 
 INSERT INTO EVENTS_NOTIFICATION VALUES (NULL, SYSDATE(), UNIX_TIMESTAMP(SYSDATE()), 
 UNIX_TIMESTAMP(SYSDATE()),  00000 , userId,  1 ,  0  
 # 读取下一行的数据  
 FETCH cursor_data 
 INTO userId; 
 END WHILE; 
 # 关闭游标  
 CLOSE cursor_data; 
 END;

二、利用 linux 的定时任务,

linux 定时任务基本命令:

查看定时任务:crontab -l
编辑定时任务:crontab -e

  */10 22-23,0-5 * * *  mysql - u 用户名 - p 密码 -e use db_name;CALL PRO_ALARM();

  或者把 use db_name;CALL PRO_ALARM(); 存到 sql 脚本中,编辑定时任务如下:

  */10 22-23,0-5 * * *  mysql - u 用户名 - p 密码 /application/Job_mysql.sql

以上是“Linux 下实现 Mysql 定时任务的案例”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计1908字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)