--作者:飞翔的小胖猪

--创建时间: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设置定时任务-渐入佳境的更多相关文章

  1. mysql设置定时任务(对于中控心跳包的实现有意义)

    转载:https://www.cnblogs.com/laowu-blog/p/5073665.html 目前用途:因为 脚本正常开关会给中控发送消息 但是万一脚本被强制关闭 没有触发脚本关闭事件就无 ...

  2. mysql设置定时任务

    –查看时间调度器是否开启 SHOW VARIABLES LIKE 'event_scheduler'; SELECT @@event_scheduler; –开启时间调度器 SET GLOBAL ev ...

  3. Navicat for MySQL 设置定时任务(事件)

    1.查询界面输入命令,查看定时任务是否开启,未开始时OFF: show variables like '%event_scheduler%'; 2. 查询界面输入命令,开启定时任务: set glob ...

  4. 如何写mysql的定时任务

     什么是事件: 一组SQL集,用来执行定时任务,跟触发器很像,都是被动执行的,事件是因为时间到了触发执行,而触发器是因为某件事件(增删改)触发执行: 查看是否开启: show variables li ...

  5. Mysql编写定时任务事件

    原文:Mysql编写定时任务事件 场景: 例如:某系统,用户每天只能拥有一次的抽奖机会,抽过后当天就不可再抽,但是过了24:00点后用户就重新拥有一次抽奖机会.像这种需要数据库定时对某个字段进行更新操 ...

  6. MySQL job/定时任务/event 学习

    参考文章: https://blog.csdn.net/qq_21108311/article/details/82589850 https://blog.csdn.net/qq_27238185/a ...

  7. 为 MySQL 设置默认字符集(UTF-8)避免产生乱码

    环境:Windows 7+Wamp Server+MySQL 5.7.9 查看MySQL默认编码: SHOW VARIABLES LIKE 'character%' character_set_cli ...

  8. MySQL设置字符集为UTF8(Windows版)

    Windows版MySQL设置字符集全部为utf8的方式 MySQL安装目录下的my.ini文件 [client]节点 default-character-set=utf8    (增加) [mysq ...

  9. MySQL设置当前时间为默认值的方法

    方法一.是用alert table语句: 复制代码代码如下: use test_db1; create table test_ta1( id mediumint(8) unsigned not nul ...

随机推荐

  1. java继承成员函数特点

    1 //成员函数. 2 /* 3 * 当子父类中出现成员函数一模一样的情况,会运行子类的函数. 4 * 这种现象,称为覆盖操作.这时函数在子父类中的特性. 5 * 函数两个特征: 6 * 1,重载. ...

  2. Android开发----使用 Room 将数据保存到本地数据库

    Room介绍以及不使用SQLite的原因 Room 在 SQLite 上提供了一个抽象层,以便在充分利用 SQLite 的强大功能的同时,能够流畅地访问数据库. 处理大量结构化数据的应用可极大地受益于 ...

  3. HTML(前端web)

    目录 一:HTML前端 1.什么是前端? 2.什么是后端? 3.什么是HTML? 4.HTML不是什么? 5.前端的学习流程 6.BS架构 7.搭建服务器 简易(浏览器访问) 8.浏览器访问报错原因 ...

  4. linux虚拟机快照

    目录 一:虚拟机快照 一:虚拟机快照 1.什么是快照? 快照可保存虚拟机在特定时刻的状态和数据. 状态包括虚拟机的电源状态(列如,打开电源,关闭电源,挂起). 数据包括组成虚拟机的所有文件,这包括磁盘 ...

  5. 学习JAVAWEB第十天

    今天内容: 运行servlet到崩溃,一直是404 明天继续运行

  6. Idea内存设置idea.vmoptions无效的解决办法

    原因:貌似是因为maven的问题 解决办法 结果

  7. 计算机网络-5-10-TCP运输连接管理

    TCP的运输连接管理 TCP是面向连接的通信,运输连接是用来传送TCP报文的,TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程.因此,运输连接有三个阶段,即:建立连接,数据传送,连接释 ...

  8. Sublime Text4 安装与配置记录

    Sublime Text作为一款优质的Code编辑器,已更新至第4个版本,本文记录关于Sublime Text 4[版本4126]的安装.汉化,以及常用配置方法. 安装 访问官网下载安装包:https ...

  9. 【转载收藏】使用Jacoco远程统计tomcat服务的代码覆盖率

    在做软件开发的时候经常会遇到做各种测试,这里介绍一种本人遇到的:代码覆盖率测试, 这个测试非常实用,能发现许多无效的模块和代码.强烈推荐!!!!! 网上好多资料都不全,而且没有详细的配置流程 本文将简 ...

  10. Docker consul的容器服务更新与发现

    Docker consul的容器服务更新与发现 目录 Docker consul的容器服务更新与发现 一.Consul简介 1. 服务注册与发现 2. consul概述 3. consul的两种模式 ...