MySQL定时执行脚本(计划任务)命令实例

MySQL事件调度器event_scheduler负责调用事件,它默认是关闭的。这个调度器不断地监视一个事件是否要调用,
要创建事件,必须打开调度器。

查看event是否开启

SHOW VARIABLES LIKE ‘event_scheduler’;– 查看是否开启定时器

复制代码 代码如下:

 

show variables like ‘%sche%’;

mysql> show variables like ‘%event_scheduler%’;
+—————–+——-+
| Variable_name | Value |
+—————–+——-+
| event_scheduler | OFF |
+—————–+——-+
1 row in set (0.20 sec)

将事件计划开启

开启事件调度器

复制代码 代码如下:

通过命令行

set global event_scheduler =1;

可通过如下任何一个命令行

 

SET GLOBAL event_scheduler = ``ON``;

创建存储过程test

SET @@``global``.event_scheduler = ``ON``;

 

SET GLOBAL event_scheduler = 1;

复制代码 代码如下:

SET @@``global``.event_scheduler = 1;

CREATE PROCEDURE test ()
BEGIN
update examinfo SET endtime = now() WHERE id = 14;
END;

 

创建event e_test

提醒:虽然这里用set global event_scheduler =
on语句开启了事件,但是每次重启电脑。或重启mysql服务后,会发现,事件自动关闭(event_scheduler=OFF),所以想让事件一直保持开启,最好修改配置文件,让mysql服务启动的时候开启时间,只需要在my.ini或者my.cnf配置文件的[mysqld]部分加上event_scheduler=ON 即可,如下:

复制代码 代码如下:

 

create event if not exists e_test
on schedule every 30 second
on completion preserve
do call test();

关闭事件调度器

每隔30秒将执行存储过程test,将当前时间更新到examinfo表中id=14的记录的endtime字段中去.

通过命令行

关闭事件任务

可通过如下任何一个命令行

复制代码 代码如下:

SET GLOBAL event_scheduler = ``OFF``;

alter event e_test ON
COMPLETION PRESERVE DISABLE;

SET @@``global``.event_scheduler = ``OFF``;

开户事件任务

SET GLOBAL event_scheduler = 0;

复制代码 代码如下:

SET @@``global``.event_scheduler = 0;

alter event e_test ON
COMPLETION PRESERVE ENABLE;

 

以上测试均成功,测试环境为mysql 5.4.2-beta-community mysql community
server(GPL)

通过配置文件my.cnf或者my.ini

以上的相关内容就是对MySQL定时执行的介绍,望你能有所收获。

在[mysqld]下增加

mysql 计划任务重启后消失

1
event_scheduler = 0 #或者OFF,DISABLED 

我们只要修改一配置即可

event_scheduler在mysql的config中设置为OFF有关。去mysql中将配置改为ON则就搞定了。

更详细的大家可以往下看

MySQL5.1.x版本中引入了一项新特性EVENT,顾名思义就是事件、定时任务机制,在指定的时间单元内执行特定的任务,因此今后一些对数据定时性操作不再依赖外部程序,而直接使用数据库本身提供的功能。

要查看当前是否已开启事件调度器,可执行如下SQL:

SHOW VARIABLES LIKE ‘event_scheduler’;

SELECT @@event_scheduler;

SHOW PROCESSLIST;
若显示:

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website