Programador de Eventos de MySQL (MySQL Event Scheduler)

MySQLMySQLBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo utilizar el Programador de Eventos (Event Scheduler) de MySQL para automatizar tareas. El laboratorio lo guía a través del proceso de habilitar el Programador de Eventos, crear un evento para actualizar periódicamente los datos en una tabla, verificar el estado de ejecución del evento y, finalmente, eliminar el evento.

El primer paso consiste en conectarse al servidor MySQL y habilitar el Programador de Eventos utilizando comandos SQL. Verificará el estado del programador antes y después de habilitarlo. Posteriormente, creará un evento para actualizar una tabla periódicamente. Luego, el laboratorio lo guiará a través del proceso de verificación del estado de ejecución del evento y, finalmente, de cómo eliminar el evento cuando ya no sea necesario.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL mysql(("MySQL")) -.-> mysql/BasicKeywordsandStatementsGroup(["Basic Keywords and Statements"]) mysql(("MySQL")) -.-> mysql/SystemManagementToolsGroup(["System Management Tools"]) mysql/BasicKeywordsandStatementsGroup -.-> mysql/use_database("Database Selection") mysql/BasicKeywordsandStatementsGroup -.-> mysql/create_database("Database Creation") mysql/BasicKeywordsandStatementsGroup -.-> mysql/create_table("Table Creation") mysql/BasicKeywordsandStatementsGroup -.-> mysql/drop_table("Table Removal") mysql/BasicKeywordsandStatementsGroup -.-> mysql/select("Data Retrieval") mysql/BasicKeywordsandStatementsGroup -.-> mysql/insert("Data Insertion") mysql/BasicKeywordsandStatementsGroup -.-> mysql/update("Data Update") mysql/SystemManagementToolsGroup -.-> mysql/show_status("Status Overview") mysql/SystemManagementToolsGroup -.-> mysql/show_variables("Configuration Overview") subgraph Lab Skills mysql/use_database -.-> lab-550906{{"Programador de Eventos de MySQL (MySQL Event Scheduler)"}} mysql/create_database -.-> lab-550906{{"Programador de Eventos de MySQL (MySQL Event Scheduler)"}} mysql/create_table -.-> lab-550906{{"Programador de Eventos de MySQL (MySQL Event Scheduler)"}} mysql/drop_table -.-> lab-550906{{"Programador de Eventos de MySQL (MySQL Event Scheduler)"}} mysql/select -.-> lab-550906{{"Programador de Eventos de MySQL (MySQL Event Scheduler)"}} mysql/insert -.-> lab-550906{{"Programador de Eventos de MySQL (MySQL Event Scheduler)"}} mysql/update -.-> lab-550906{{"Programador de Eventos de MySQL (MySQL Event Scheduler)"}} mysql/show_status -.-> lab-550906{{"Programador de Eventos de MySQL (MySQL Event Scheduler)"}} mysql/show_variables -.-> lab-550906{{"Programador de Eventos de MySQL (MySQL Event Scheduler)"}} end

Habilitar el Programador de Eventos

En este paso, habilitaremos el Programador de Eventos (Event Scheduler) en MySQL. El Programador de Eventos es un hilo en segundo plano que ejecuta eventos programados. Por defecto, está deshabilitado. Necesitamos habilitarlo para crear y ejecutar eventos.

Primero, conectémonos al servidor MySQL utilizando el cliente mysql. Abra una terminal y ejecute el siguiente comando:

mysql -u root -p

Se le pedirá la contraseña de root. Ingrese la contraseña que estableció durante la instalación de MySQL. Si no ha establecido una contraseña, simplemente presione Enter.

Ahora que está conectado al servidor MySQL, puede verificar el estado actual del Programador de Eventos. Ejecute la siguiente consulta SQL:

SHOW GLOBAL VARIABLES LIKE 'event_scheduler';

Debería ver una salida similar a esta:

+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| event_scheduler  | OFF   |
+------------------+-------+
1 row in set (0.00 sec)

Esto confirma que el Programador de Eventos está actualmente deshabilitado.

Para habilitar el Programador de Eventos, ejecute la siguiente consulta SQL:

SET GLOBAL event_scheduler = ON;

Este comando habilita el Programador de Eventos de forma global.

Ahora, verifiquemos que el Programador de Eventos está habilitado. Ejecute nuevamente la misma consulta SHOW GLOBAL VARIABLES:

SHOW GLOBAL VARIABLES LIKE 'event_scheduler';

Ahora debería ver una salida similar a esta:

+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| event_scheduler  | ON    |
+------------------+-------+
1 row in set (0.00 sec)

Esto confirma que el Programador de Eventos está ahora habilitado.

Finalmente, salga del cliente MySQL escribiendo exit y presionando Enter.

exit

Ha habilitado con éxito el Programador de Eventos en MySQL. En el siguiente paso, crearemos un evento para actualizar datos periódicamente.

Crear un evento para actualizar datos periódicamente

En este paso, crearemos un evento de MySQL que actualice una tabla periódicamente. Primero, necesitamos crear una base de datos y una tabla. Luego, crearemos el evento para actualizar la tabla cada minuto.

Primero, conectémonos al servidor MySQL utilizando el cliente mysql. Abra una terminal y ejecute el siguiente comando:

mysql -u root -p

Ingrese la contraseña de root cuando se le solicite.

Ahora, creemos una base de datos llamada test_db:

CREATE DATABASE IF NOT EXISTS test_db;

A continuación, cambiemos a la base de datos test_db:

USE test_db;

Ahora, creemos una tabla llamada event_table con dos columnas: id (INT, clave primaria, autoincremental) y value (INT):

CREATE TABLE IF NOT EXISTS event_table (
    id INT AUTO_INCREMENT PRIMARY KEY,
    value INT
);

Insertemos un valor inicial en la tabla:

INSERT INTO event_table (value) VALUES (0);

Ahora, creemos el evento. El evento actualizará la columna value en la tabla event_table cada minuto. Ejecute la siguiente declaración SQL:

CREATE EVENT IF NOT EXISTS update_event
ON SCHEDULE EVERY 1 MINUTE
DO
  UPDATE event_table SET value = value + 1;

Esta declaración crea un evento llamado update_event. La cláusula ON SCHEDULE EVERY 1 MINUTE especifica que el evento debe ejecutarse cada minuto. La cláusula DO especifica la declaración SQL a ejecutar cuando el evento se ejecuta, que incrementa la columna value en 1.

Para verificar si el evento se ha creado, ejecute la siguiente consulta SQL:

SHOW EVENTS FROM test_db;

Debería ver una salida similar a esta:

+----------+---------------+-------------+-----------+----------+---------------------+---------------------+-----------+------------+-------------------+----------------------+--------------------+--------------------+
| Db       | Name          | Definer     | Time zone | Type     | Execute at          | Interval_value      | Interval_field | Starts              | Ends               | Status             | Originator          | character_set_client | collation_connection | db_collation         |
+----------+---------------+-------------+-----------+----------+---------------------+---------------------+-----------+------------+-------------------+----------------------+--------------------+--------------------+
| test_db  | update_event  | root@%      | SYSTEM    | RECURRING | NULL                | 1                   | MINUTE       | 2024-10-27 14:30:00 | NULL              | ENABLED            | 1                    | utf8mb4              | utf8mb4_0900_ai_ci   | utf8mb4_0900_ai_ci   |
+----------+---------------+-------------+-----------+----------+---------------------+---------------------+-----------+------------+-------------------+----------------------+--------------------+--------------------+
1 row in set (0.00 sec)

Esto confirma que el evento se ha creado y está habilitado.

Ahora, salga del cliente MySQL:

exit

El evento se ejecutará ahora cada minuto, actualizando la columna value en la tabla event_table. En el siguiente paso, verificaremos el estado de ejecución del evento.

Verificar el estado de ejecución del evento

En este paso, verificaremos el estado de ejecución del evento que creamos en el paso anterior. Nos conectaremos al servidor MySQL y consultaremos la tabla event_table para ver si la columna value se ha actualizado. Dado que el evento se ejecuta cada minuto, deberíamos ver que el valor se incrementa con el tiempo.

Primero, conectémonos al servidor MySQL utilizando el cliente mysql:

mysql -u root -p

Ingrese la contraseña de root cuando se le solicite.

A continuación, cambiemos a la base de datos test_db:

USE test_db;

Ahora, consultemos la tabla event_table para ver el valor actual de la columna value:

SELECT * FROM event_table;

Debería ver una salida similar a esta:

+----+-------+
| id | value |
+----+-------+
|  1 |     N |
+----+-------+
1 row in set (0.00 sec)

Donde N es un valor entero. Dado que el evento se ejecuta cada minuto, el valor de N debería ser mayor que el valor inicial de 0 que insertamos en el paso anterior. Si acaba de crear el evento, espere un minuto o dos y vuelva a ejecutar la consulta. Debería ver que el valor se incrementa.

Para verificar aún más la ejecución del evento, puede consultar el registro de errores de MySQL en busca de cualquier error relacionado con el evento. Sin embargo, para este laboratorio, asumiremos que el evento se está ejecutando correctamente si la columna value se está actualizando.

Puede ejecutar la consulta SELECT varias veces, esperando un minuto entre cada ejecución, para observar cómo se incrementa la columna value. Esto confirma que el evento se está ejecutando como se esperaba.

Finalmente, salga del cliente MySQL:

exit

Ha verificado con éxito el estado de ejecución del evento. En el siguiente paso, eliminaremos el evento.

Eliminar el evento

En este paso, eliminaremos el evento que creamos en los pasos anteriores. Eliminar un evento lo quita del servidor MySQL, evitando que se ejecute nuevamente.

Primero, conectémonos al servidor MySQL utilizando el cliente mysql:

mysql -u root -p

Ingrese la contraseña de root cuando se le solicite.

A continuación, cambiemos a la base de datos test_db:

USE test_db;

Ahora, eliminemos el evento llamado update_event. Ejecute la siguiente declaración SQL:

DROP EVENT IF EXISTS update_event;

Esta declaración elimina el evento si existe. La cláusula IF EXISTS evita que se produzca un error si el evento no existe.

Para verificar que el evento se ha eliminado, ejecute la siguiente consulta SQL:

SHOW EVENTS FROM test_db;

Debería ver un conjunto de resultados vacío, lo que indica que no hay eventos en la base de datos test_db:

Empty set (0.00 sec)

Alternativamente, si ve el update_event en la lista, significa que el evento no se eliminó correctamente. Verifique la sintaxis SQL y vuelva a intentarlo.

Finalmente, salga del cliente MySQL:

exit

Ha eliminado con éxito el evento. Esto concluye el laboratorio. Ha aprendido cómo habilitar el Programador de Eventos (Event Scheduler), crear un evento para actualizar datos periódicamente, verificar el estado de ejecución del evento y eliminar el evento.

Resumen

En este laboratorio, el primer paso se centra en habilitar el Programador de Eventos (Event Scheduler) de MySQL, un hilo en segundo plano responsable de ejecutar eventos programados. Esto implica conectarse al servidor MySQL utilizando el cliente mysql, verificar el estado actual del Programador de Eventos (que inicialmente está deshabilitado) y luego habilitarlo utilizando el comando SET GLOBAL event_scheduler = ON;. La activación exitosa se confirma volviendo a verificar la variable global event_scheduler.

El paso siguiente presenta la creación de un evento de MySQL diseñado para actualizar periódicamente una tabla. Esto implica definir la programación del evento y las declaraciones SQL que ejecutará.