--作者:飞翔的小胖猪

--创建时间: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. 主键约束(primary key 简称PK)

    7.5.主键约束 主键约束相关术语 主键约束 主键字段:字段添加了主键约束,叫主键字段 主键值:主键字段中的每个值都叫主键值 什么是主键? 主键值是每一行记录的唯一标识(主键值是每一行记录的身份证号) ...

  2. 运维利器-ClusterShell集群管理

    在运维实战中,如果有若干台数据库服务器,想对这些服务器进行同等动作,比如查看它们当前的即时负载情况,查看它们的主机名,分发文件等等,这个时候该怎么办?一个个登陆服务器去操作,太傻帽了!写个shell去 ...

  3. JavaIo流入门篇之字节流基本使用。

    一 基本知识了解(  字节流, 字符流, byte,bit是啥?) /* java中字节流和字符流之前有接触过,但是一直没有深入的学习和了解. 今天带着几个问题,简单的使用字节流的基本操作. 1 什么 ...

  4. 2020-11-21 f

    题意:给定一个长度为 \(n\) 的序列 \(A\),\(A_i \in [0, 2 ^ k)\).定义 \(f(x)\) 为 \(A_1\) ^ \(x\),\(A_2\) ^ \(x \cdots ...

  5. AT2164 [AGC006C] Rabbit Exercise

    首先我们可以考虑一下 \(x\) 关于 \(y\) 的对称点的坐标,不难发现就是 \(x + 2 \times (y - x)\),那么期望的增量就会增加 \(2 \times (y - x)\).不 ...

  6. JS 将Table内容导出到Excel(样式设计)

    转载请注明来源:https://www.cnblogs.com/hookjc/ function saveAsExcel(tableID){ var tb = new TableToExcel(tab ...

  7. express源码分析之Router

    express作为nodejs平台下非常流行的web框架,相信大家都对其已经很熟悉了,对于express的使用这里不再多说,如有需要可以移步到www.expressjs.com自行查看express的 ...

  8. 用maven在MANIFEST.MF文件中的Class-Path中增加当前目录(.)

    Xml代码 <configuration> <archive> <manifest> <mainClass>com.dongwei.test.Main& ...

  9. NS前缀

    NS来自于NeXTStep的一个软件 NeXT Software OC中不支持命名空间(namespace) NS是为了避免命名冲突而给的前缀 看到NS前缀就知道是Cocoa中的系统类的名称

  10. axios请求配置

    全局配置示例(在js文件配置): axios.defaults.baseURL = 'https://api.example.com'; axios.defaults.headers.common[' ...