mysql设置定时任务-渐入佳境
--作者:飞翔的小胖猪
--创建时间:2021年2月26日
前言
mysql中设置定时任务,需要先打开调度才能实现自动执行任务。调度功能开启后过再配合存储过程或事件等组件实现特定或定时的任务实现。
步骤
1 开启事件调度功能,基于全局和配置文件。
2 编写相关需要执行的动作,可通过两种方式实现。
2.1 基于存储过程调用动作编写事件
2.2 直接使用事件自带的定时功能
一 、操作
1.1 开启调度
开启调度功能需要在当前数据库系统设置,并添加到配置文件中。调度开启后请再次使用命令查看确认调度是否开启。
确认调度状态
-- 查询方法,任选其一即可。
mysql> SHOW VARIABLES LIKE 'event_scheduler';
mysql> SELECT @@event_scheduler;
系统中开启
-- 设置方法(开启),以下命令任选其一。
mysql> SET @@global.event_scheduler = ON;
mysql> SET GLOBAL event_scheduler = ON;
mysql> SET GLOBAL event_scheduler = 1;
mysql> SET @@global.event_scheduler = 1;
-- 设置方法(关闭)
mysql> SET @@global.event_scheduler = OFF;
mysql> SET GLOBAL event_scheduler = OFF;
mysql> SET GLOBAL event_scheduler = 0;
mysql> SET @@global.event_scheduler = 0
添加配置文件
在/etc/my.cnf文件中添加内容,注意需要添加到[mysqld]下。
[root@136-b ~]# cat /etc/my.cnf
[mysqld]
event_scheduler = 1
1.2 编写任务
基于存储过程
基于存储过程的方式需要先定义一个存储过程通过这个存储过程去调用其他的动作如事件。
DELIMITER $$ USE `database`$$
DROP PROCEDURE IF EXISTS `auto_del_90`$$
CREATE DEFINER=`root`@`%` PROCEDURE `auto_del_90`()
BEGIN
DELETE FROM basetb WHERE DATE(发生时间) <= DATE(DATE_SUB(NOW(),INTERVAL 90 DAY));
END$$ DELIMITER ;
直接使用事件
直接使用事件自带的事件计数器完成定时任务的执行操作,此时不需要设置存储过程。
DELIMITER $$
DROP EVENT IF EXISTS deleteLog;
CREATE EVENT deleteLog
ON SCHEDULE EVERY 60 SECOND
ON COMPLETION PRESERVE
DO BEGIN
delete from check_host_web_status where resource_id like 'app%' and inspection_date<=now()-interval 300 second;
END$$
DELIMITER ;
解释:
第一行:设置结束符为 $$ 第二行:删除名为deteLog的事件,防止冲突。 第三行:创建一个名为deleteLog的事件,名字区分大小写。 第四行:设置事件的调度间隔事件单位有:YEAR,MONTH,DAY,HOUR,MINUTE 或者SECOND 第五行: 设置事件执行过后的动作,默认事件执行一次后会删除,周期性任务必须保存。参数:PRESERVE(保存)、NOT PRESERVE(不保存) 第六行:动作开始行标识 第七行:具体执行语句 第八行:动作结束行标识 第九行:设置语句结束符为 ;
1.3 事件常见操作
查看事件
mysql > select db,name,interval_value,interval_field,last_executed,status,time_zone from mysql.event;

禁/启用事件
--禁用对应的事件
mysql> ALTER EVENT deleteLog DISABLE;
--启用对应的事件
mysql> ALTER EVENT deleteLog ENABLED;
删除事件
mysql> DROP EVENT [IF EXISTS] event_name;
参考文档:http://c.biancheng.net/view/7703.html https://www.cnblogs.com/qqhfeng/p/12532689.html
mysql设置定时任务-渐入佳境的更多相关文章
- mysql设置定时任务(对于中控心跳包的实现有意义)
转载:https://www.cnblogs.com/laowu-blog/p/5073665.html 目前用途:因为 脚本正常开关会给中控发送消息 但是万一脚本被强制关闭 没有触发脚本关闭事件就无 ...
- mysql设置定时任务
–查看时间调度器是否开启 SHOW VARIABLES LIKE 'event_scheduler'; SELECT @@event_scheduler; –开启时间调度器 SET GLOBAL ev ...
- Navicat for MySQL 设置定时任务(事件)
1.查询界面输入命令,查看定时任务是否开启,未开始时OFF: show variables like '%event_scheduler%'; 2. 查询界面输入命令,开启定时任务: set glob ...
- 如何写mysql的定时任务
什么是事件: 一组SQL集,用来执行定时任务,跟触发器很像,都是被动执行的,事件是因为时间到了触发执行,而触发器是因为某件事件(增删改)触发执行: 查看是否开启: show variables li ...
- Mysql编写定时任务事件
原文:Mysql编写定时任务事件 场景: 例如:某系统,用户每天只能拥有一次的抽奖机会,抽过后当天就不可再抽,但是过了24:00点后用户就重新拥有一次抽奖机会.像这种需要数据库定时对某个字段进行更新操 ...
- MySQL job/定时任务/event 学习
参考文章: https://blog.csdn.net/qq_21108311/article/details/82589850 https://blog.csdn.net/qq_27238185/a ...
- 为 MySQL 设置默认字符集(UTF-8)避免产生乱码
环境:Windows 7+Wamp Server+MySQL 5.7.9 查看MySQL默认编码: SHOW VARIABLES LIKE 'character%' character_set_cli ...
- MySQL设置字符集为UTF8(Windows版)
Windows版MySQL设置字符集全部为utf8的方式 MySQL安装目录下的my.ini文件 [client]节点 default-character-set=utf8 (增加) [mysq ...
- MySQL设置当前时间为默认值的方法
方法一.是用alert table语句: 复制代码代码如下: use test_db1; create table test_ta1( id mediumint(8) unsigned not nul ...
随机推荐
- golang中的标准库context
在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理.请求处理函数通常会启动额外的 goroutine 用来访问后端服务,比如数据库和RPC服务.用来处理一个请 ...
- java抽象类案例
1 package face_09; 2 /* 3 * 雇员示例: 4 * 需求:公司中程序员有姓名,工号,薪水,工作内容. 5 * 项目经理除了有姓名,工号,薪水,还有奖金,工作内容. 6 * 对给 ...
- JVM之Java内存区域
JVM之Java内存区域 世界上并没有完美的程序,但我们并不因此而沮丧,因为写程序本来就是一个不断追求完美的过程. 一.JAVA内存区域 谈及JAVA虚拟机运行时数据区域就不得不祭出这张经典的图了: ...
- C++数据结构类型以及实现类
1.array数组 #include<iostream> #include<array> using namespace std; int main() { array< ...
- 洛谷P1002过河卒java100分题解
题目描述如图: 这道题我以前以回溯的方法做,只能拿到60分 现在才发现是道动态规划题 解题思路: 创建一个(0,0)到终点打小的二维数组表示棋盘 每个坐标的值为此位置到终点的路数 最下方一排和最右方一 ...
- Vue3源码分析之微任务队列
参考资料:https://zh.javascript.info/microtask-queue#wei-ren-wu-dui-lie-microtaskqueue 简化版 Vue3 中的 微任务队列实 ...
- Promise、Generator、Async有什么区别?
前言 我们知道Promise与Async/await函数都是用来解决JavaScript中的异步问题的,从最开始的回调函数处理异步,到Promise处理异步,到Generator处理异步,再到Asyn ...
- vivo 评论中台的流量及数据隔离实践
一.背景 vivo评论中台通过提供评论发表.点赞.举报.自定义评论排序等通用能力,帮助前台业务快速搭建评论功能并提供评论运营能力,避免了前台业务的重复建设和数据孤岛问题.目前已有vivo短视频.viv ...
- linux增加用户组,并在用户组下添加指定用户
groupadd mysql #1 useradd -g mysql[用户组] mysql[用户名] #2 useradd mysql[用户名] -g mysql[用户组]
- 一站式超全JavaScript数组方法大全
一站式JavaScript数组方法大全(建议收藏) 方法一览表 详细操作 本人总结了JavaScript中有关数组的几乎所有方法(包含ES6之后新增的),并逐一用代码进行演示使用,希望可以帮助大家! ...