MySQL:启用事件功能(mysql开启事件)
MySQL 旨在以“提供高可用性和性能优化”为目标,为用户提供一个高性能、可靠和安全的关系型数据库。同样值得一提的是MySQL 中提供的事件功能,它让定时任务更加容易执行。
事件是 MySQL 中的一类特殊的存储程序,旨在定义一个按照指定的计划执行的任务(事件)。它不需要外部应用程序对其进行控制或用户处理,而是完全自动执行的(在MySQL 5.1.6 中开始支持)。
要使用 MySQL 中的事件功能,首先需要确保服务器已启用定时任务特性,可以用以下 SQL 语句查询:
mysql> SELECT @@GLOBAL.EVENT_SCHEDULER;
+-------------------------+| @@GLOBAL.EVENT_SCHEDULER |
+-------------------------+| OFF |
+-------------------------+
从上面结果可以看出,当前服务器尚未启用事件功能,有两种方式可以启用它。一种是在MySQL 的启动参数中添加 –event-scheduler=1 参数,然后重新启动MySQL 服务,另一种则是用如下 SQL 语句进行更改:
mysql> SET GLOBAL EVENT_SCHEDULER = ON;
Query OK, 0 rows affected (0.00 sec)
确认MySQL 已启用事件功能。可以再次查询,应该会显示 ON :
mysql> SELECT @@GLOBAL.EVENT_SCHEDULER;
+-------------------------+| @@GLOBAL.EVENT_SCHEDULER |
+-------------------------+| ON |
+-------------------------+
启用 MySQL 事件功能后,我们就可以创建事件了。基本语法如下:
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
例如,要每两小时备份一次数据,可以使用如下代码:
CREATE EVENT IF NOT EXISTS backup_data
ON SCHEDULE EVERY 2 HOURDO INSERT INTO backup_table SELECT col1, col2 FROM tbl_name;
我们也可以将其 DISABLE 或 ENABLE 所创建的事件:
ALTER EVENT backup_data DISABLE;
ALTER EVENT backup_data ENABLE;
最后,可以使用 DROP EVENT 删除事件:
DROP EVENT IF EXISTS backup_data;
总之,MySQL 中的事件功能可以让定时任务变得更加容易,极大地提高开发效率。