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 HOUR
DO 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 中的事件功能可以让定时任务变得更加容易,极大地提高开发效率。


数据运维技术 » MySQL:启用事件功能(mysql开启事件)