mysql定时任务配置

做项目有时会遇到一些状态需要每天定时去维护,我的方案是写成sql语句或者存储过程,再配置mysql调度器让数据库每天去执行。废话不多说,直接进去正文:

假如当前时间是2016-12-28 12:05:00,你执行下面语句,等到12:10时,系统自动执行调度任务去往aaa表里insert一条记录。

Select @@event_scheduler;#查看事件调度程序,如果是OFF,则执行下条语句
SET GLOBAL event_scheduler = ON;#设置时间调度程序为ON
#每天的2016-12-28 12:10:00 执行INSERT INTO test.aaa VALUES (CURRENT_TIMESTAMP);
USE test;
CREATE TABLE aaa (timeline TIMESTAMP); CREATE EVENT e_test
ON SCHEDULE EVERY 1 DAY  STARTS ‘2016-12-28 12:10:00‘
DO INSERT INTO test.aaa VALUES (CURRENT_TIMESTAMP);

以上内容简单的改改,就能满足每天的任务调度,下面资料供参考。

●默认 EVENT 支持是没有启动的,可以通过下面的命令来查看状态:

Select @@event_scheduler;

如果返回 OFF ,则需要执行下面的命令启动:

SET GLOBAL event_scheduler = ON;

好了,上面虽然启动了 EVENT ,但是每次重启 MySQL 之后 EVENT 并没有自动启动,那么如何让它自动启动呢?

方法一:找到当前使用的 .cnf 文件,在 [mysqld] 的下面加入如下行

event_scheduler=1

方法二:启动 mysql 的时候增加 --event_scheduler=1

mysql start --event_scheduler=1

查看事件

mysql> show events

mysql> show full events

mysql> SELECT * FROM mysql.event;

mysql> SELECT * FROM information_schema.events;

2> 修改事件 (ALTER EVENT)

ALTER EVENT event_name

[ON SCHEDULE schedule]

[RENAME TO new_event_name]

[ON COMPLETION [NOT] PRESERVE]

[COMMENT ‘‘comment‘‘]

[ENABLE | DISABLE]

[DO sql_statement]

1)  临时关闭事件

ALTER EVENT e_test DISABLE;

2)  开启事件

ALTER EVENT e_test ENABLE;

3)  将每天清空 test 表改为 5 天清空一次:

ALTER EVENT e_test

ON SCHEDULE EVERY 5 DAY;

3> 删除事件 (DROP EVENT)

语法很简单,如下所示:

DROP EVENT [IF EXISTS] event_name

例如删除前面创建的 e_test 事件

DROP EVENT e_test;

当然前提是这个事件存在,否则会产生 ERROR 1513 (HY000): Unknown event 错误,因此最好加上 IF EXISTS

DROP EVENT IF EXISTS e_test;

●先来看一下它的语法:

CREATE EVENT [IF NOT EXISTS] event_name

ON SCHEDULE schedule

[ON COMPLETION [NOT] PRESERVE]

[ENABLE | DISABLE]

[COMMENT ‘‘comment‘‘]

DO sql_statement;

schedule:

AT TIMESTAMP [+ INTERVAL INTERVAL]

| EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]

INTERVAL:

quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |

WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |

DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

●先来看一个简单的例子来演示每秒插入一条记录到数据表

USE test;

CREATE TABLE aaa (timeline TIMESTAMP);

CREATE EVENT e_test_insert

ON SCHEDULE EVERY 1 SECOND

DO INSERT INTO test.aaa VALUES (CURRENT_TIMESTAMP);

等待 3 秒钟后,再执行查询看看:

mysql> SELECT * FROM aaa;

●再创建2007 年 7 月 20 日 12 点整清空 test 表:

CREATE EVENT e_test

ON SCHEDULE AT TIMESTAMP ‘‘2007-07-20 12:00:00‘‘

DO TRUNCATE TABLE test.aaa;

上面的资料供完成复杂的任务调度,下面是一下调度的例子:

2) 5 天后清空 test 表:

CREATE EVENT e_test

ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 DAY

DO TRUNCATE TABLE test.aaa;

3) 2007 年 7 月 20 日 12 点整清空 test 表:

CREATE EVENT e_test

ON SCHEDULE AT TIMESTAMP ‘‘2007-07-20 12:00:00‘‘

DO TRUNCATE TABLE test.aaa;

4)  每天定时清空 test 表:

CREATE EVENT e_test

ON SCHEDULE EVERY 1 DAY

DO TRUNCATE TABLE test.aaa;

5) 5 天后开启每天定时清空 test 表:

CREATE EVENT e_test

ON SCHEDULE EVERY 1 DAY

STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY

DO TRUNCATE TABLE test.aaa;

6)  每天定时清空 test 表, 5 天后停止执行:

CREATE EVENT e_test

ON SCHEDULE EVERY 1 DAY

ENDS CURRENT_TIMESTAMP + INTERVAL 5 DAY

DO TRUNCATE TABLE test.aaa;

7) 5 天后开启每天定时清空 test 表,一个月后停止执行:

CREATE EVENT e_test

ON SCHEDULE EVERY 1 DAY

STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY

ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH

DO TRUNCATE TABLE test.aaa;

[ON COMPLETION [NOT] PRESERVE] 可以设置这个事件是执行一次还是持久执行,默认为 NOT PRESERVE 。

8)  每天定时清空 test 表 ( 只执行一次,任务完成后就终止该事件 ) :

CREATE EVENT e_test

ON SCHEDULE EVERY 1 DAY

ON COMPLETION NOT PRESERVE

DO TRUNCATE TABLE test.aaa;

[ENABLE | DISABLE] 可是设置该事件创建后状态是否开启或关闭,默认为 ENABLE 。

[COMMENT  ‘ comment ’ ] 可以给该事件加上注释。

以上内容来自网站或教材,如涉及到版权问题,请留言与此。

时间: 2024-10-21 21:25:04

mysql定时任务配置的相关文章

spring boot 整合 quartz 集群环境 实现 动态定时任务配置【原】

最近做了一个spring boot 整合 quartz  实现 动态定时任务配置,在集群环境下运行的 任务.能够对定时任务,动态的进行增删改查,界面效果图如下: 1. 在项目中引入jar 2. 将需要的表导入数据库 官网上有不同数据库的脚本,找到对应的,导入即可 3. java 代码 将quartz 的相关配置文件,配置为暴露bean,方便后期引用. 有一处关键的地方,就是注入spring 上下文,也可以算是一个坑.如果,不注入spring 上下文,那么新添加的定时任务job,是新new 的一个

mysql 定时任务和存储过程

mysql 定时任务和存储过程 最近在做日志系统,中间用到了 mysql, 其中有一个要求: 把数据库中 7天之后的日志清除了.看到 mysql 也支持 定时任务.于是就用 mysql 来做了.下面就是这次使用代码. 存储过程 use webapm; --创建存储过程 DELIMITER $$ CREATE PROCEDURE `p_del_slow`(IN `date_inter` INT) BEGIN DELETE FROM slow_duration WHERE (TO_DAYS(NOW(

linux 下安装 mysql 并配置 python 开发环境

1.安装 mysql ,安装过程中将提示设置 root 用户的密码,默认可以设置为 rootadmin . $ sudo apt-get install mysql-server 2.安装 mysql 开发工具(不安装时,安装 MySQL-python 提示错误 "mysql_config not found"). $ sudo apt-get install libmysqld-dev 3.安装 python 的 mysql 库 MySQL-python (首先安装 python-d

Mysql主从配置,实现读写分离

大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是 不堪设想.这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力.Ok切入今天微博主题,利用MySQL主从配置,实现读写分离,减轻数据库压力.这种

【转】MySQL安全配置介绍

二.Mysql权限介绍 mysql中存在4个控制权限的表,分别为user表,db表,tables_priv表,columns_priv表. mysql权限表的验证过程为: 1.先从user表中的Host,User,Password这3个字段中判断连接的ip.用户名.密码是否存在,存在则通过验证. 2.通过身份认证后,进行权限分配,按照user,db,tables_priv,columns_priv的顺序进行验证.即先检查全局权限表user,如果user中对应的权限为Y,则此用户对所有数据库的权限

mysql server 配置 转

MySQL Server 5.0 – 安装及配置 Author : Jeff   2006-2-20 关键字: MySQL 配置 环境:Window XP Professional + SP2, MySQL Server 5.0 下载软件: MySQL Server 5.0.18 http://dev.mysql.com/downloads/mysql/5.0.html 下载MySQL Server,并安装在本地机器上. 下面两个为Windows图形界面工具. MySQL Query Brows

笔记13(FTP配置、tomcat配置、resin配置、MySQL主从配置)

FTP服务搭建与配置 FTP介绍 FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输. FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机. 小公司用的多,大企业不用FTP,因为不安全. 使用vsftpd搭建ftp服务 centos上自带vsftpd 安装:yum instal

Linux MySQL安装配置

官方下载地址:http://dev.mysql.com/downloads/mysql/ 1. 下载合适的版本,解压到 /usr/local/mysql 目录下: 2. 进行到 /usr/local/mysql 目录下,创建 data/mysql 目录,后面将会设置把数据库保存在此目录下: 3. 添加用户和用户组 #添加用户组 groupadd mysql #添加用户mysql 到用户组mysql useradd -g mysql mysql 3.1 useradd -r -s /sbin/no

mysql主从复制配置(精简版)

一.首先准备两台服务器,虚拟机即可,以笔者为例:master:192.168.1.105 slave:192.168.1.106 二.保证两台虚拟机能相互ping通,先把防火墙关闭:service iptables stop 三.安装mysql,可参考笔者linux 快速安装mysql 四.配置主从 编辑/etc/my.cnf文件 (1)配置master 添加如下配置: server-id = 1      #Server标识log-bin            #打开 MySQL 的 Bina