MySQL Event
一、前言
<span style="font-size: 12px;">SET GLOBAL event_scheduler = 1;---或我们可以在配置my.ini文件 中加上 event_scheduler = 1</span>
<span style="font-size: 12px;">SET GLOBAL event_scheduler = ON;</span>
<span style="font-size: 12px;">mysqld ... --event_scheduler=1</span>
<span style="font-size: 12px;">SHOW VARIABLES LIKE 'event_scheduler';</span>
<span style="font-size: 12px;">SELECT @@event_scheduler;</span>
<span style="font-size: 12px;">SHOW PROCESSLIST;</span>
二、创建事件(CREATE EVENT)
<span style="font-size: 12px;">CREATE EVENT [IF NOT EXISTS] event_nameON 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}</span>
<span style="font-size: 12px;">USE test;
CREATE TABLE aaa (timeline TIMESTAMP);
CREATE EVENT e_test_insertON SCHEDULE EVERY 1 SECOND DO INSERT INTO test.aaa VALUES (CURRENT_TIMESTAMP);</span>
<span style="font-size: 12px;">mysql> SELECT * FROM aaa;
+---------------------+
| timeline |
+---------------------+
| 2007-07-18 20:44:26 |
| 2007-07-18 20:44:27 |
| 2007-07-18 20:44:28 |
+---------------------+</span>
<span style="font-size: 12px;">CREATE EVENT e_testON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 DAYDO TRUNCATE TABLE test.aaa;</span>
<span style="font-size: 12px;">CREATE EVENT e_testON SCHEDULE AT TIMESTAMP '2007-07-20 12:00:00'DO TRUNCATE TABLE test.aaa;</span>
<span style="font-size: 12px;">CREATE EVENT e_testON SCHEDULE EVERY 1 DAYDO TRUNCATE TABLE test.aaa;</span>
<span style="font-size: 12px;">CREATE EVENT e_testON SCHEDULE EVERY 1 DAYSTARTS CURRENT_TIMESTAMP + INTERVAL 5 DAYDO TRUNCATE TABLE test.aaa;</span>
<span style="font-size: 12px;">CREATE EVENT e_testON SCHEDULE EVERY 1 DAYENDS CURRENT_TIMESTAMP + INTERVAL 5 DAYDO TRUNCATE TABLE test.aaa;</span>
<span style="font-size: 12px;">CREATE EVENT e_testON SCHEDULE EVERY 1 DAYSTARTS CURRENT_TIMESTAMP + INTERVAL 5 DAYENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTHDO TRUNCATE TABLE test.aaa;</span>
8) 每天定时清空test表(只执行一次,任务完成后就终止该事件):
<span style="font-size: 12px;">CREATE EVENT e_testON SCHEDULE EVERY 1 DAYON COMPLETION NOT PRESERVEDO TRUNCATE TABLE test.aaa;</span>
[COMMENT ‘comment’]可以给该事件加上注释。
三、修改事件(ALTER EVENT)
<span style="font-size: 12px;">ALTER EVENT event_name[ON SCHEDULE schedule][RENAME TO new_event_name][ON COMPLETION [NOT] PRESERVE][COMMENT 'comment'][ENABLE | DISABLE][DO sql_statement]</span>
<span style="font-size: 12px;">ALTER EVENT e_test DISABLE;</span>
<span style="font-size: 12px;">ALTER EVENT e_test ENABLE;</span>
<span style="font-size: 12px;">ALTER EVENT e_testON SCHEDULE EVERY 5 DAY;</span>
四、删除事件(DROP EVENT)
<span style="font-size: 12px;">DROP EVENT [IF EXISTS] event_name</span>
<span style="font-size: 12px;">DROP EVENT e_test;</span>
<span style="font-size: 12px;">DROP EVENT IF EXISTS e_test;
注意:如果你将event执行了Alter event event_name disable.那么当你重新启动mysql服务
器后,该event将被删除(测试版本:5.1.30)</span>
应用案例
- 首先创建存储过程
delimiter //create procedure `Slave_Monitor`()beginSELECT VARIABLE_VALUE INTO @SLAVE_STATUSFROM information_schema.GLOBAL_STATUSWHERE VARIABLE_NAME='SLAVE_RUNNING';IF ('ON' != @SLAVE_STATUS) THENSET GLOBAL SQL_SLAVE_SKIP_COUNTER=0;SLAVE START;END IF;end; //delimiter ;
由于存储过程中无法调用类似 SHOW SLAVE STATUS 这样的语句,因此无法得到确切的复制错误信息和错误代码,不能进一步的处理 SLAVE 停止的各种情况。 - 接着,创建任务
CREATE EVENT IF NOT EXISTS `Slave_Monitor`ON SCHEDULE EVERY 5 SECONDON COMPLETION PRESERVEDOCALL Slave_Monitor(); 创建了一个任务,每 5秒钟执行一次,任务结束后依旧保留该任务,而不是删除。当然了,在本例中的任务不会结束,除非将它手动禁止了。
- 如果在运行中想要临时关闭一下某个任务,执行 ALTER EVENT 语句即可:
(root:localhost:)test> alter event `Slave_Monitor` ONCOMPLETION PRESERVE DISABLE;(root:localhost:)test> alter event `Slave_Monitor` ONCOMPLETION PRESERVE ENABLE;
MySQL Event相关推荐
- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.
/usr/local/mysql/bin/mysqldump -uroot -pxxxxx --all-databases > all.sql mysql用mysqldump导出数据库时提示&q ...
- mysql event scheduler机制 与 动态表名创建
mysql event scheduler机制 与 动态表名创建 今天有一个需求,需要定时在mysql创建表与删除表,以及根据日期命名表名.诚然,通过外部程序很容易实现与控制这一切. 但是需要额外的服 ...
- mysql event执行记录_mysql event建立模板(可记录执行履历)
建立履历记录表 CREATE TABLE `mysql`.`t_event_history` ( `dbname` VARCHAR(128) NOT NULL DEFAULT '', `eventna ...
- mysql维护计划任务_浅谈MySQL event 计划任务
一.查看event是否开启 show variables like '%sche%'; set global event_scheduler =1; 二. -- 设置时区并设置计划事件调度器开启,也可 ...
- mysql event 变量_mysql 中event的用法
二.适用范围对于每隔一段时间就有固定需求的操作,如创建表,删除数据等操作,可以使用event来处理. 例如:使用event在每月的1日凌晨1点自动创建下个月需要使用的三张表. 三.使用权限 开启eve ...
- mysql 计划任务消耗_浅谈MySQL event 计划任务
一.查看event是否开启 show variables like '%sche%'; set global event_scheduler =1; 二. -- 设置时区并设置计划事件调度器开启,也可 ...
- mysql event 同步,MySQL Event Scheduler(事件调度器)
这篇文章主要为大家详细介绍了MySQL Event Scheduler(事件调度器),具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编小韵来看看吧!一.概述 事件调 ...
- mysql event 学习
mysql 通过事件可以实现定时任务 : 1. 检查你的MYSQL是否开了这个功能 show variables like "%scheduler" //注意 最后是er 2. ...
- 【Mysql】MySQL event 计划任务
一.查看event是否开启 show variables like '%sche%'; set global event_scheduler =1; 二. -- 设置时区并设置计划事件调度器开启,也可 ...
最新文章
- 布隆过滤器 redis_使用基于 Redis 的 Java 布隆过滤器
- 宁‘内卷‘,勿‘躺平‘
- 比特币要升级成为“比特币现金”
- 图解SqlServer更改sa密码
- 21.3.3 原子性与易变性 21.3.4 原子类
- windows mac 安装lua
- Stanford CS230深度学习(四)TensorFlow2.1
- 软件度量都该度个啥?
- delphi 剪切板变量_delphi读写剪贴板
- hkust ucl 电子工程比较_通信工程专业
- 安卓模拟器所有版本系统xp框架安装方法(万能)
- 版本管理工具之ClearCase
- 打开计算机文件反应慢怎么解决方法,电脑反应慢怎么解决
- gsm在linux下工作原理,GSM模块详解 从工作原理到应用案例
- svc预测概率_sklearn-SVC实现与类参数
- Java8 新特性 (五)Stream API
- Python相关文章索引(13)
- php pack ode,Python中的数值ODE求解
- mysql汉字转拼音首字母_MySQL中文汉字转拼音的自定义函数和使用实例(首字的首字母)...
- linux动态链接库全局变量共享问题DLL共享数据段
热门文章
- oracle中区间大小,Oracle的逻辑结构(表空间、段、区间、块)——总结
- c语言从入门到精通第四版电子书_C语言从入门到精通(吐血分享)4.pdf
- Python中的高级数据结构
- 两种常见挂载Jenkins slave节点的方法
- 频繁项集-------产生强关联规则的过程
- [SPOJ DQUERY] D-query(树状数组,离线)
- Delphi:ADOConnection连接SQLServer自动断网问题解决
- Weblogic EJB 学习笔记(3)精
- w3ctech 2011 北京站(组图)
- 计算机考研新大纲,2020考研计算机新大纲考情分析