GNU/Linux >> Tutoriales Linux >  >> Linux

Guía del programador de eventos y eventos de MySQL

Introducción

Los eventos de MySQL son tareas que se ejecutan según un programa definido por el usuario . El Programador de eventos es un subproceso especial que ejecuta los Eventos a una hora programada.

Los eventos de MySQL son útiles porque facilitan la administración de bases de datos y las tareas operativas periódicas de la base de datos.

En este tutorial, aprenderá qué son los eventos de MySQL y cómo configurarlos y usarlos.

Requisitos previos:

  • Un sistema que ejecuta MySQL en un servidor de base de datos
  • Cuenta de usuario MySQL con privilegios de root

¿Qué es el programador de eventos de MySQL?

MySQL Event Scheduler es un hilo que se ejecuta en segundo plano y gestiona la ejecución de eventos programados. El programador está en estado de suspensión a menos que la variable global event_scheduler está configurado en ON o 1 .

MySQL Event Scheduler representa la alternativa de MySQL al trabajo de Cron . Algunos beneficios del Programador de eventos son:

  • Está escrito directamente en el servidor MySQL.
  • Es independiente de la plataforma y la aplicación.
  • Se puede usar siempre que se requiera una actualización o limpieza regular de la base de datos.
  • Reduce el número de compilaciones de consultas.

Configuración del programador de eventos de MySQL

El estado del Programador de eventos de MySQL se puede configurar para establecer el Programador encendido , desactivado o deshabilitar eso.

Para verificar el estado del Programador de eventos, ejecute el siguiente comando:

SHOW processlist;

El event_scheduler La variable del sistema que se muestra en el resultado muestra el estado del Programador de eventos. Aquí, el event_scheduler el estado de la variable es Esperando en cola vacía , lo que significa que el Programador está encendido y esperando que un evento lo active.

Los estados posibles son:

  • ON :El subproceso del Programador de eventos se está ejecutando y ejecuta todos los eventos programados. Este es el estado predeterminado del Programador. Si el Programador está ON , la SHOW processlist la salida del comando lo muestra como un proceso daemon.

Para activar el programador de eventos ON , ejecute el siguiente comando:

SET GLOBAL event_scheduler = ON;

El valor ON es intercambiable con 1 .

  • OFF :El subproceso del programador de eventos no se está ejecutando y no aparece en la salida de SHOW processlist . Si el programador de eventos está configurado en OFF , los eventos programados no se ejecutan.

Para desactivar el programador de eventos OFF , ejecute el siguiente comando:

SET GLOBAL event_scheduler = OFF;

El valor OFF es intercambiable con 0 .

  • DISABLED :Este estado significa que el Programador de eventos no está operativo. El subproceso no se ejecuta y no aparece en la salida de SHOW processlist comando.

Para deshabilitar el Programador de eventos, agregue la siguiente opción de línea de comandos al iniciar el servidor:

--event-scheduler=DISABLED

Programación de eventos MySQL

Un evento es un objeto de base de datos que contiene instrucciones SQL ejecutadas en un momento específico o en intervalos regulares. Los eventos comienzan y terminan en una fecha y hora específicas.

Dado que los eventos de MySQL se ejecutan en el momento que especifica el usuario, estos eventos también se denominan temporales. desencadenantes . Sin embargo, no deben confundirse con MySQL Triggers, que son objetos de base de datos que se ejecutan en respuesta a eventos específicos. Por lo tanto, es mejor usar el término eventos al referirse a tareas programadas para evitar confusiones.

Las siguientes secciones tratan sobre cómo crear , mostrar , cambiar o eliminar eventos.

Crear nuevos eventos

Para crear un nuevo evento, utilice la siguiente sintaxis:

CREATE EVENT [IF NOT EXIST] event_name
ON SCHEDULE schedule
DO
event_body

El IF NOT EXIST La instrucción se asegura de que el nombre del evento sea único para la base de datos en uso. Especifique un nombre de evento único en lugar de event_name sintaxis. El cronograma para ejecutar el evento se especifica después de ON SCHEDULE declaración. El evento puede ser un evento único o un evento recurrente .

Introduzca instrucciones SQL en lugar de event_body sintaxis después de DO palabra clave. El cuerpo del evento puede contener procedimientos almacenados, consultas individuales o declaraciones compuestas. Escriba declaraciones compuestas dentro de un BEGIN END bloquear.

Programar eventos

Los eventos se pueden programar para una ejecución posterior o para una ejecución periódica.

Evento único

Un evento único se ejecuta solo una vez y luego se elimina automáticamente.

Para crear un evento único, especifique la marca de tiempo después de ON SCHEDULE declaración usando la siguiente sintaxis:

AT timestamp + [INTERVAL interval]

Las opciones posibles para intervalo son:

  • AÑO
  • TRIMESTRE
  • MES
  • DÍA
  • HORA
  • MINUTO
  • SEMANA
  • SEGUNDO
  • AÑO_MES
  • DÍA_HORA
  • DÍA_MINUTO
  • DÍA_SEGUNDO
  • HORA_MINUTO
  • HORA_SEGUNDO
  • MINUTO_SEGUNDO

La marca de tiempo debe ser DATETIME o TIMESTAMP valor en el futuro. Para especificar una hora exacta, agregue un intervalo a la marca de tiempo usando + INTERVAL , un entero positivo y una de las opciones de intervalo. Tenga en cuenta que esto solo se aplica cuando se usa CURRENT_TIMESTAMP función.

Por ejemplo:

Aquí, el evento ocurre dos días después de su creación y la tarea es soltar una tabla llamada test .

Los eventos se eliminan automáticamente después de la ejecución. Si desea guardar el evento en la base de datos, agregue ON COMPLETION PRESERVE cláusula al crear el evento.

Evento recurrente

Un evento recurrente ocurre repetidamente en un momento específico. Para programar un evento recurrente, use la siguiente sintaxis después de ON SCHEDULE declaración:

EVERY interval 
STARTS timestamp [+ INTERVAL] 
ENDS timestamp [+ INTERVAL]

Los STARTS La palabra clave especifica cuándo comienza la ejecución del evento, mientras que ENDS La palabra clave especifica cuándo se detiene la ejecución del evento.

Por ejemplo:

Este evento hace que MySQL elimine la prueba de la tabla una vez cada seis meses, comenzando de inmediato.

También puede especificar un intervalo para iniciar el evento más tarde. Por ejemplo:

También puede especificar la hora de inicio y la hora de finalización del evento:

Este evento hace que MySQL suelte la tabla llamada test una vez cada seis meses durante cinco años, a partir de cinco días a partir de ahora.

Mostrar eventos

El siguiente comando muestra todos los eventos almacenados en la base de datos:

SHOW EVENTS FROM database_name;

Tenga en cuenta que los eventos únicos se eliminan automáticamente después de la ejecución y no se muestran en la salida de SHOW EVENTS comando, a menos que use el comando ON COMPLETION PRESERVE cláusula al crear el evento.

La salida enumera todos los eventos almacenados en la base de datos especificada.

Eventos de cambio

Usa el ALTER EVENT declaración para cambiar un evento existente:

ALTER EVENT event_name
[ ON SCHEDULE schedule ]
[ RENAME TO new_event_name ]
[ ON COMPLETION [ NOT ] PRESERVE ]
[ COMMENT 'comment' ]
[ ENABLED | DISABLED ]
[ DO sql_statement ]

El event_name debe ser un evento que ya existe. Todas las declaraciones después de ALTER EVENT son opcionales, dependiendo de lo que desee cambiar. Omitir cualquier cláusula en ALTER EVENT comando significa que permanecen en su estado anterior. Cualquier cláusula incluida significa que se aplican los nuevos valores que especifique.

Por ejemplo:

En este ejemplo, cambiamos el nombre del evento y cambiamos su declaración SQL.

Eliminar eventos (eliminar evento)

Para eliminar (soltar) un evento, utilice la siguiente sintaxis:.

DROP EVENT [IF EXISTS] event_name;

Por ejemplo:

Esta acción borra permanentemente el evento de la base de datos.

Usando el IF EXISTS declaración emite una advertencia si tal evento no existe:

Limitaciones de eventos de MySQL

Hay ciertas limitaciones a tener en cuenta al usar MySQL Events. Algunos de ellos son:

  • Los eventos no pueden devolver un conjunto de resultados. La salida se dirige a dev/null y el evento falla o se realiza correctamente sin notificar al usuario.
  • Los nombres de los eventos no distinguen entre mayúsculas y minúsculas. Dos eventos no pueden tener el mismo nombre con mayúsculas y minúsculas diferentes.
  • Los eventos no se pueden programar más allá del 19 de enero de 2038, el máximo que se puede representar en la época de Unix.
  • Los eventos no pueden ser creados, descartados o alterados por otro programa, activador o evento almacenado.
  • Los eventos no pueden crear, descartar ni alterar programas o disparadores almacenados.
  • Los intervalos MONTH , YEAR_MONTH , QUARTER y YEAR se resuelven en meses. Todos los demás intervalos se resuelven en segundos.
  • Puede haber dos eventos con el mismo horario, pero no hay forma de forzar un orden de ejecución.
  • Un evento siempre se ejecuta con privilegios de definidor. El hilo ejecuta el evento actuando como el usuario que creó el evento, con los privilegios de ese usuario. Tenga en cuenta que eliminar un usuario no elimina los eventos que el usuario creó.
  • Los eventos no cambian el recuento de la ejecución de una declaración, lo que significa que no tiene efecto en SHOW STATISTICS comando.
  • El retraso máximo para ejecutar un evento es de dos segundos. Sin embargo, el information_schema.events la tabla siempre muestra la hora exacta de ejecución del evento.
  • Utilice variables definidas por el usuario en lugar de referencias a variables locales dentro de declaraciones preparadas dentro de una rutina almacenada.
  • El número de llamadas recursivas está limitado a max_sp_recursion_depth . Si esta variable es 0, que es el valor predeterminado, la recursividad está deshabilitada.
  • Use el START TRANSACTION declaración en lugar de BEGIN WORK , desde BEGIN WORK se trata como el comienzo de BEGIN END bloque.
  • Cualquier otra limitación de los procedimientos almacenados también se aplica a los eventos.

Linux
  1. MySQL:ajuste y optimización del rendimiento

  2. Bash For Loop Guía y ejemplos

  3. Una guía para ejecutar un proxy inverso para HTTP(S), SSH y MySQL/MariaDB usando NGINX

  4. Cómo configurar LogAnalyzer con Rsyslog y MySQL

  5. Instalar y usar MySQL Workbench en Fedora 35 / 34 / 33 / 32 - Guía paso a paso

Guía de Docker:implementación de Ghost Blog con MySQL y Traefik con Docker

Buscar y reemplazar MySQL

La guía completa para instalar MySQL en Ubuntu

Cómo Multi-Master MySQL con Percona y Keepalived

Guía y configuración del gestor de arranque LILO Linux

Guía para principiantes de gestión de usuarios de MySQL