MySQL Event

创建EVENT语法:

CREATE
[DEFINER = { user | CURRENT_USER }]
EVENT
[IF NOT EXISTS]
event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT 'comment']
DO event_body; schedule:
AT timestamp [+ INTERVAL interval] ...
| EVERY interval
[STARTS timestamp [+ INTERVAL interval] ...]
[ENDS timestamp [+ INTERVAL interval] ...] interval:
quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND} ALTER
[DEFINER = { user | CURRENT_USER }]
EVENT event_name
[ON SCHEDULE schedule]
[ON COMPLETION [NOT] PRESERVE]
[RENAME TO new_event_name]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT 'comment']
[DO event_body] DROP EVENT [IF EXISTS] event_name

DEFINER:指定事件执行时使用的用户账号,当事件执行时,会根据该指定账号的权限来检查事件定于的语句是否有权限执行。如果创建Event时未指定DEFINER,则默认使用创建事件的用户,与显示指定DEFINER=CURRENT_USER相同;

[ON COMPLETION [NOT] PRESERVE]: 默认Event为一次执行,执行完成后即删除,即NOT PERSERVE;如果希望Event在执行完成后也不删除,那么需指定ON COMPLETION PRESERVE选项。

[ENABLE | DISABLE | DISABLE ON SLAVE]: 在MYSQL中,Event和表一样归属于某个schema,如果该schema处于主从复制中,那么在主库创建Event后会同步到从库中,但会默认将从库中Event的状态修改为SLAVESIDE_DISABLED,即在从库上不执行。如果在主库上创建Event时指定DISABLE或DISABLE ON SLAVE,那么主库上的Event不会启用。

MySQL EventScheduler

使用EventScheduler可以实现类似SQL SERVER中Job相同的功能,定期执行特定脚本。

在复制中,可以使用SHOW SLAVE STATUS中的Seconds_Behind_Master来判断当前主库到从库的延迟,但如果主库长时间未更新,则会导致Seconds_Behind_Master的值不准确,因此我们可以使用event_scheduler来定期更新主库中的特定表的数据,以保证主库有定期更新。

操作方法:

-- 首先判断EventScheduler功能是否开启
SHOW VARIABLES LIKE 'event_scheduler'; -- 开启EventScheduler功能
SET GLOBAL event_scheduler=ON; -- 在主库上创建用于监控的表并插入数据:
CREATE TABLE TB_RepMonitor
(
ID INT PRIMARY KEY,
DT DATETIME
);
INSERT INTO TB_RepMonitor VALUES(,NOW()); -- 然后创建event_scheduler来定期更新
DROP EVENT IF EXISTS Event_TB_RepMonitor_Update;
DELIMITER $$;
CREATE DEFINER='root'@'localhost'
EVENT Event_TB_RepMonitor_Update
ON SCHEDULE EVERY SECOND
ENABLE
DO
BEGIN
UPDATE testdb1.TB_RepMonitor SET DT=NOW();
END
$$;
DELIMITER ; -- 查看EVENT的状态
SHOW EVENTS LIKE 'Event_TB_RepMonitor_Update' \G -- 当主库上创建EVENT后,会同步到从库上,并默认将状态修改为SLAVESIDE_DISABLED;
SHOW EVENTS LIKE 'Event_TB_RepMonitor_Update' \G -- 在主库上查看testdb1.TB_RepMonitor表数据'
-- 这样就可以放心使用SHOW SLAVE STATUS中的Seconds_Behind_Master的值了
SELECT *,NOW() FROM testdb1.TB_RepMonitor;

相关操作命令:

##==================================##
##查看数据库中创建的所有作业##
select * from information_schema.events \G; ##==================================##
##启用作业##
ALTER EVENT schema.event_name ENABLE ##==================================##
##禁用作业##
ALTER EVENT schema.event_name DISABLE ##==================================##
##删除作业##
drop event schema.eventname

MySQL Event--Event and EventScheduler的更多相关文章

  1. mysql之event

    mysql之event http://blog.csdn.net/lxgwm2008/article/details/9088521 Mysql事件调度器(Event Scheduler)类似于定时器 ...

  2. MySQL 定时器EVENT学习

    原文:http://blog.csdn.net/lifuxiangcaohui/article/details/6583535 MySQL 定时器EVENT学习 MySQL从5.1开始支持event功 ...

  3. Mysql使用event,类似oracle job

    MySQL从5.1开始支持event功能,类似oracle的job功能.有了这个功能之后我们就可以让MySQL自动的执行数据汇总等功能,不用像以前需要操作的支持了.如linux crontab功能. ...

  4. Mysql中event事件的入门

    Mysql中event事件的入门 主要涉及的知识点:mysql的存储过程.mysql的event事件调度. 参考资料: Qiao_Zhi的博客:[周期性执行事件]MySQL事件(Event)& ...

  5. Mysql的Event

    Mysql的Event Event简介 Event是mysql中的一个事件,和触发器类似,触发器是在某条sql语句执行后可能会触发,而Event是每隔一段时间或某个特定的时间点执行,可以精确到秒. 准 ...

  6. MySQL定时任务event,储存过程(定时删除指定时间前90天指定表的数据)

    MySQL定时任务event,储存过程(定时删除指定时间前90天指定表的数据) 分类: MySql5.x2014-06-23 15:16 1266人阅读 评论(0) 收藏 举报 mysql数据库 &l ...

  7. mysql中event的用法详解

    一.基本概念mysql5.1版本开始引进event概念.event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发.通过单独或调用存 ...

  8. 【MySQL】Event事件与游标

    MySQL的事件就像Linux系统上的定时任务,按照设置的时间或者间隔时间执行设置好的任务. 如果用SQLyog一类的写存储过程.触发器或者事件会省事一些,例如SQLyog就会生成一个大致的模板: D ...

  9. MySQL数据库 Event 定时执行任务.

    一.背景 由于项目的业务是不断往前跑的,所以难免数据库的表的量会越来越庞大,不断的挤占硬盘空间.即使再大的空间也支撑不起业务的增长,所以定期删除不必要的数据是很有必要的.在我们项目中由于不清理数据,一 ...

  10. mysql的event(事件)用法详解

    SELECT * FROM mysql.event;SET GLOBAL event_scheduler = 1; -- 开启定时器 0:off 1:on SHOW VARIABLES LIKE 'e ...

随机推荐

  1. 容器工厂(原型&单例)

    上一篇讲的是容器工厂的原型. 我们可以不必通过new关键之创建实例,可以直接取容器里面的实例. 我们可以发现,在对比他们的地址值的时候,他们是相同的为true. 如果我们需要的是不一样的呢.也就是有一 ...

  2. 转 ObjExporter Unity3d导出场景地图寻路

    http://wiki.unity3d.com/index.php?title=ObjExporter

  3. 【虚拟机】解决网络适配器没有 VirtualBox Host-Only Ethernet Adapter 问题

    下面以windows系统来演示重新安装 VirtualBox Host-Only Ethernet Adapter的方法 1.“win+r”输入“devmgmt.msc”,出现如下界面: 2.点击菜单 ...

  4. Java 中断

    https://zhuanlan.zhihu.com/p/45667127 看的似懂非懂

  5. 安装Go插件遇到的问题及解决方法

    1. 问题:在 Windows 平台下使用 go get 安装sqlite3 驱动时报错 The remote end hung up unexpectedly ? 原因及解决方法: 原因可能有两种: ...

  6. Web版记账本开发记录(三)

    今天又理了一下思路,思路也越来越明了,越来越清晰了. 今天的开发还是比较顺利的,我通过学习了一些分页功能而且成功地应用在用户登录上,实现了管理员和普通用户之间不同的操作, 今天在用户登录上增加了用户权 ...

  7. nodejs基础(三)

    apache是web服务器,tomcat是应用(java)服务器 ###  开源中国  查找http中加载不同类型文件所需要的Content-type:http://tool.oschina.net/ ...

  8. Python 小节回顾

    1.python程序是大小写敏感. 2.python中字符串是用单引号 ' 或双引号 " 括起来的任意文本. python中用 r '  ' 表示 ' ' 内部的字符串不转义. 3.在pyt ...

  9. python的闭包与延时绑定问题

    起源于一道面试题... def mul(): return [lambda x : i*x for i in range(4)] print([m(2) for m in mul()]) # outp ...

  10. spring注入3种方式

    1.构造方法 2.接口注入 3.set方法