Planificador de Eventos de MySQL

MySQLBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá a utilizar el Planificador de Eventos de MySQL (MySQL Event Scheduler) para automatizar tareas de bases de datos. El Planificador de Eventos es una característica de MySQL que ejecuta sentencias SQL en momentos o intervalos programados. Esto es útil para automatizar tareas rutinarias como el mantenimiento de bases de datos, la limpieza de datos o la generación de informes periódicos.

Se le guiará a través de la habilitación del Planificador de Eventos, la creación de una base de datos y una tabla, la programación de un evento recurrente para modificar datos, la verificación de la ejecución del evento y, finalmente, la eliminación del evento. Al final de este laboratorio, comprenderá los fundamentos del uso del Planificador de Eventos de MySQL.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 100%. Ha recibido una tasa de reseñas positivas del 93% por parte de los estudiantes.

Habilitar el Planificador de Eventos

El Planificador de Eventos de MySQL (MySQL Event Scheduler) se ejecuta como un hilo en segundo plano que ejecuta eventos programados. Por defecto, esta característica está deshabilitada. Su primer paso es habilitarla.

Primero, abra la terminal desde su escritorio.

Conéctese al servidor MySQL como usuario root. En este entorno de laboratorio, puede usar sudo para conectarse sin contraseña.

sudo mysql -u root

Una vez conectado, verá el prompt de MySQL (mysql>).

Verifique el estado actual del Planificador de Eventos con el siguiente comando:

SHOW GLOBAL VARIABLES LIKE 'event_scheduler';

La salida mostrará que el event_scheduler está OFF por defecto.

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

Para habilitar el Planificador de Eventos, ejecute el siguiente comando. Esta configuración es global y persistirá mientras el servidor esté en ejecución.

SET GLOBAL event_scheduler = ON;

Verifique que el cambio fue exitoso comprobando el estado nuevamente:

SHOW GLOBAL VARIABLES LIKE 'event_scheduler';

La salida ahora debería mostrar el valor como ON, confirmando que el Planificador de Eventos está activo.

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

Ahora que el Planificador de Eventos está habilitado, puede proceder al siguiente paso.

Crear una Base de Datos y Tabla

Antes de crear un evento programado, necesita una base de datos y una tabla con las que el evento interactúe. En este paso, creará una base de datos llamada test_db y una tabla llamada event_logs.

Mientras aún se encuentra en la shell de MySQL, cree la base de datos test_db. La cláusula IF NOT EXISTS evita un error si la base de datos ya existe.

CREATE DATABASE IF NOT EXISTS test_db;

Cambie a la base de datos recién creada para que sea la base de datos actual para los comandos subsiguientes.

USE test_db;

Verá un mensaje de confirmación: Database changed.

A continuación, cree la tabla event_logs. Esta tabla tendrá un id de auto-incremento y una columna counter que nuestro evento actualizará.

CREATE TABLE event_logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    counter INT NOT NULL
);

Finalmente, inserte una fila inicial en la tabla event_logs con un valor de inicio de 0. Esto le da a nuestro evento un registro para actualizar.

INSERT INTO event_logs (id, counter) VALUES (1, 0);

Puede verificar que la tabla se creó y los datos se insertaron correctamente ejecutando los siguientes comandos:

SHOW TABLES;
SELECT * FROM event_logs;

La salida debería mostrar la tabla event_logs y una única fila con id = 1 y counter = 0.

+-----------------+
| Tables_in_test_db |
+-----------------+
| event_logs      |
+-----------------+
1 row in set (0.00 sec)

+----+---------+
| id | counter |
+----+---------+
|  1 |       0 |
+----+---------+
1 row in set (0.00 sec)

Con la base de datos y la tabla listas, ahora puede crear el evento programado.

Crear un Evento Recurrente

Ahora creará un evento que se ejecuta periódicamente. Este evento incrementará el valor de counter en la tabla event_logs cada 10 segundos.

Asegúrese de que todavía está utilizando la base de datos test_db.

USE test_db;

Cree un evento llamado update_counter_event.

CREATE EVENT update_counter_event
ON SCHEDULE EVERY 10 SECOND
DO
  UPDATE event_logs SET counter = counter + 1 WHERE id = 1;

Analicemos esta sentencia:

  • CREATE EVENT update_counter_event: Define un nuevo evento con el nombre update_counter_event.
  • ON SCHEDULE EVERY 10 SECOND: Especifica que el evento se ejecutará cada 10 segundos.
  • DO UPDATE ...: Esta es la sentencia SQL que el evento ejecutará. Incrementa el counter para la fila donde id es 1.

Para verificar que el evento se creó correctamente, use el comando SHOW EVENTS.

SHOW EVENTS;

La salida listará su nuevo evento y sus detalles. Verifique que su Status sea ENABLED.

+---------+----------------------+---------------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+
| Db      | Name                 | Definer       | Time zone | Type      | Execute at | Interval value | Interval field | Starts              | Ends | Status  | Originator | character_set_client | collation_connection | Database Collation |
+---------+----------------------+---------------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+
| test_db | update_counter_event | root@localhost| SYSTEM    | RECURRING | NULL       | 10             | SECOND         | 2024-05-27 12:00:00 | NULL | ENABLED |          1 | utf8mb4              | utf8mb4_0900_ai_ci   | utf8mb4_0900_ai_ci |
+---------+----------------------+---------------+-----------+-----------+------------+----------------+----------------+---------------------+------+---------+------------+----------------------+----------------------+--------------------+
1 row in set (0.00 sec)

Nota: El Definer y la hora de Starts variarán.

El evento ahora está activo y programado para ejecutarse. En el siguiente paso, verificará si está actualizando los datos como se espera.

Comprobar Ejecución del Evento

Ahora que el evento está programado, necesita confirmar que se está ejecutando correctamente. Dado que el evento se ejecuta cada 10 segundos, debería ver que el valor de counter aumenta con el tiempo.

Consulte la tabla event_logs para ver el valor actual.

SELECT * FROM event_logs WHERE id = 1;

Ahora, el counter podría ser 2 o un número pequeño.

+----+---------+
| id | counter |
+----+---------+
|  1 |       2 |
+----+---------+
1 row in set (0.00 sec)

Espere unos 15-20 segundos para permitir que el evento se ejecute al menos una vez. Luego, ejecute la consulta SELECT nuevamente.

SELECT * FROM event_logs WHERE id = 1;

Debería ver que el valor de counter ha aumentado.

+----+---------+
| id | counter |
+----+---------+
|  1 |       3 |
+----+---------+
1 row in set (0.00 sec)

Si espera más tiempo y vuelve a ejecutar la consulta, el valor seguirá aumentando, lo que confirma que update_counter_event se está ejecutando correctamente según su programación. Esto demuestra el poder de las tareas automatizadas basadas en el tiempo en MySQL.

Eliminar el Evento

Cuando un evento programado ya no es necesario, es una buena práctica eliminarlo para evitar el consumo innecesario de recursos. En este paso final, eliminará el evento update_counter_event.

Para eliminar el evento, utilice la sentencia DROP EVENT. Se recomienda la cláusula IF EXISTS para evitar un error si el evento ya ha sido eliminado.

DROP EVENT IF EXISTS update_counter_event;

Para verificar que el evento ha sido eliminado, ejecute nuevamente el comando SHOW EVENTS.

SHOW EVENTS;

La salida ahora debería ser un conjunto vacío, confirmando que no hay más eventos programados en la base de datos test_db.

Empty set (0.00 sec)

El evento update_counter_event ya no se ejecutará. Puede confirmarlo esperando y consultando la tabla event_logs nuevamente; el valor de counter ya no aumentará.

Ha gestionado con éxito el ciclo de vida de un evento de MySQL. Ahora puede salir del shell de MySQL.

exit;

Resumen

En este laboratorio, ha aprendido los fundamentos del uso del Planificador de Eventos de MySQL (MySQL Event Scheduler) para la automatización de tareas. Ha habilitado con éxito el planificador, configurado una base de datos y una tabla, y creado un evento recurrente para actualizar datos automáticamente. También ha practicado la verificación del estado y la ejecución de un evento, y ha aprendido cómo eliminarlo una vez que ya no era necesario.

Estas habilidades son valiosas para automatizar una amplia gama de tareas de administración y mantenimiento de bases de datos, ayudando a garantizar la integridad de los datos y a reducir la carga de trabajo manual.