MySql 定时任务的使用

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: MySql 定时任务的使用

MySql定时任务的使用


简介

  自MySQL5.1.6起,增加了一个非常有特色的功能事件调度器(Event Scheduler),可以用做定时执行某些特定任务(例如:删除记录、对数据进行汇总等等),来取代原先只能由操作系统的计划任务来执行的工作。更值得一提的是MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRONWindows下的任务计划)只能精确到每分钟执行一次。对于一些对数据实时性要求比较高的应用(例如:股票、赔率、比分等)就非常适合。

 

操作:

1,开启event_scheduler计划。

1

新建查询,执行语句:set GLOBAL event_scheduler = 1;

 

2:编辑my.cnf,进入mysql安装目录,找到my.cnf配置文件,在文件中添加event_scheduler = 1

示例(linux下)

builder:~# find / -name my.cnf

/mnt/mysql/my.cnf

builder:~# cd /mnt/mysql/  

builder:/mnt/mysql# vi my.cnf

……

  

2,要查看当前是否已开启事件调度器

执行如下SQL

1sql查询器中:show variables like 'event_scheduler';

 

 

2sql查询器中:select @@event_scheduler;

 


3show processlist; 

 



3,创建事件(create event)

语法:  

CREATE EVENT [IFNOT EXISTS] event_name

  ONSCHEDULE schedule

  [ONCOMPLETION [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 | OUR_SECOND | MINUTE_SECOND} 

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

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

 

4,修改事件(ALTER EVENT)

语法:

ALTER EVENT event_name

  [ONSCHEDULE schedule]

  [RENAME TOnew_event_name]

  [ONCOMPLETION [NOT] PRESERVE]

  [COMMENT 'comment']

  [ENABLE | DISABLE]

  [DO sql_statement]

 

5,删除事件(DROP EVENT)

语法:

DROP EVENT [IF EXISTS] event_name

6,举例

#查看数据库版本[5.1.6]

select version();

 

#开启evenet_sheduler进程

set GLOBAL event_scheduler = 1;

 

#查看当前是否已开启事件调度器

#1

show variables like 'event_scheduler';

#2

select @@event_scheduler;

#3

show processlist;

 

#查看当前数据库中所有事件

show events;

 

#查看所有数据库中所有事件

#1

select * from mysql.event;

#2

select * from information_schema.events

 

#创建定时任务

#1.测试环境搭建

#1.1查看存在那些数据库

show databases;

 

#1.2进入数据库

use test;

 

#1.3查看表

show tables;

 

#1.4创建测试表student

create table student

(

 num integer,

 name varchar(6),

 addr varchar(10),

 comment varchar(15)

)

 

#1.5显示表结构

desc student;

 

#1.6插入数据

insert into student values(1,'lili','noaddr','nocomment');

insert into student values(2,'xiaoli','noaddr','nocomment');

insert into student select * from student;

 

#2创建定时清理任务

#2.13秒清理一次表

create event if not exists e_delete

on schedule every 3 second

do truncate table test.student;

#查看效果

select * from test.student;

 

#2.2每天插入1条数据

create event e_insert

on schedule every 1 day

do insert into test.student values(3,'test','noaddr','nocoment');

 

#2.3五天后清空表

create event e_truncate

on schedule at current_timestamp + interval 5 day

do truncate table test.student;

 

#20121112121212秒清空表

create event e_truncate

on schedule at timestamp '2012-11-12 12:12:12'

do truncate table test.student;

 

#1天执行一次清空表

create event e_truncate

on schedule every 1 day

do truncate table test.student;

 

#五天后开启每天执行一次清空表

create event e_truncate

on schedule every 1 day

starts current_timestamp + interval 5 day

do truncate table test.student;

 

#五天后停止每天执行一次清空表

create event e_truncate

on schedule every 1 day

ends current_timestamp + interval 5 day

do truncate table test.student;

 

#五天后开启每天执行一次清空表,1个月后停止

create event e_truncate

on schedule every 1 day

starts current_timestamp + interval 5 day

ends current_timestamp + interval 1 month

do truncate table test.student;

 

#每天执行一次清空表,执行完后终止事件,以后都不执行了

create event e_truncate

on schedule every 1 day

on completion not preserve

do truncate table test.student;

 

#3临时关闭事件

use test;

alter event e_delete disable;

 

#注意:禁用定时功能后,当你重新启动mysql服务时,该定时功能可能被删除。查看是否被删除语句如下

show events;

 

#4开启事件

use testdb;

alter event e_delete enable;

 

#5修改事件,如改为每5天清理一次

alter event e_delete

on schedule every 5 day

do truncate table table_name;

 

#6永久删除事件

use testdb;

drop event if exists e_delete;

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
存储 关系型数据库 MySQL
MySQL创建定时任务
MySQL创建定时任务
45 0
|
9月前
|
SQL 关系型数据库 MySQL
OceanBase数据库社区版的MySQL模式支持定时任务
OceanBase数据库社区版的MySQL模式支持定时任务
323 1
|
14天前
|
存储 SQL 关系型数据库
MySQL job 定时任务
MySQL job 定时任务
|
5月前
|
关系型数据库 MySQL Shell
MySQL【实践 01】Linux 环境 MySQL 数据库备份 shell 脚本(脚本源码及说明+定时任务配置+数据库恢复测试)粘贴可以
MySQL【实践 01】Linux 环境 MySQL 数据库备份 shell 脚本(脚本源码及说明+定时任务配置+数据库恢复测试)粘贴可以
52 0
|
5月前
|
存储 SQL 关系型数据库
MySQL中定时任务的使用
MySQL中定时任务的使用
39 0
|
6月前
|
存储 关系型数据库 MySQL
MySQL定时任务存储过程函数和动态表名实例
MySQL定时任务存储过程函数和动态表名实例
|
6月前
|
存储 关系型数据库 MySQL
Navicate设置MySQL定时任务执行存储过程
Navicate设置MySQL定时任务执行存储过程
|
9月前
|
存储 Java 关系型数据库
分布式定时任务框架Quartz总结和实践(2)—持久化到Mysql数据库
本文主要介绍分布式定时任务框架Quartz集成SpringBoot持久化数据到Mysql数据库的操作,上一篇文章使用Quartz创建定时任务都是保存在内存中,如果服务重启定时任务就会失效,所以Quartz官方也提供将定时任务等信息持久化到Mysql数据库的功能,本文主要实现这种Quartz的这种使用方式。
444 0
分布式定时任务框架Quartz总结和实践(2)—持久化到Mysql数据库
|
10月前
|
关系型数据库 MySQL API
PHP定时任务:轮询多个API接口并将内容自动录入mysql数据库的解决方案
PHP定时任务:轮询多个API接口并将内容自动录入mysql数据库的解决方案
74 0
|
11月前
|
消息中间件 SQL 关系型数据库
设置 Flink 的定时任务来实现定时触发写入 MySQL 的逻辑
设置 Flink 的定时任务来实现定时触发写入 MySQL 的逻辑
886 1