martedì 29 agosto 2017

Come creare job eventi in mysql

Come per sql server, anche su mysql è possibile creare degli eventi.
Un evento o un job mysql è un'azione programmabile sul proprio database, in modo tale che giri in automatico in un determinato momento, una volta sola o in maniera ricorrente.

Vediamo subito come creare jobs mysql, in modo da poter schedulare delle operazioni automatiche su tabelle e dati.


Come creare job eventi in mysql


Per poter utilizzare i jobs mysql, occorre prima attivarli a livello globale.
Ecco la sintassi sql da utilizzare per attivare gli eventi mysql:

SET GLOBAL event_scheduler="ON"

Una volta attivata questa opzione globale di sistema (che ovviamente si disattiva mettendo OFF), gli eventi sono disponibili e pronti all'uso, occorre solo crearli.

La sintassi sql da utilizzare per creare un evento schedulato su mysql è la seguente:

CREATE DEFINER=`user-che-fa-girare-evento`@`server` EVENT `nome-evento` ON SCHEDULE AT data-e-ora-evento' ON COMPLETION NOT PRESERVE ENABLE DO sintassi-sql-da-eseguire

Questa sintassi praticamente crea un evento con un determinato nome, che gira in una determinata ora un determinato giorno, con un determinato utente su un determinato server.
Al completamento dell'evento, il job viene cancellato (not preserve), mentre con enable si indica invece che l'evento è attivo e pronto a girare (mettere disable per disattivare).
Infine dopo DO, vanno tutte le istruzioni sql da eseguire.

Se invece si vuole creare una ricorrenza mysql, ovvero un evento che gira ogni ora, ogni giorno, ogni settimana, ogni mese, ecc... ecco la sintassi da utilizzare:

CREATE EVENT `ogni 5 minuti` ON SCHEDULE EVERY 5 MINUTE STARTS '2017-07-31 14:00:00.000000' ENDS '2017-08-01 00:00:00.000000' ON COMPLETION NOT PRESERVE ENABLE DO sql-da-eseguire

In questo esempio infatti, faccio girare ogni 5 minuti il job, che compie qualche operazione sql e poi termina.
Le parole chiave da memorizzare per creare script mysql automatici sono ON SCHEDULE EVERY, e poi STARTS (per dire quando il job deve partire) ed ENDS (facoltativo, indica la data-ora termine del job).
Ovviamente poi, è possibile cambiare la frequenza tramite sintassi sql, sostituendo il comando MINUTE con HOUR, DAY, YEAR, ecc...

Bene, è tutto.
Adesso siete in grado di far compiere a mysql ogni sorta di operazione automatica tramite script sql schedulati.
Ad esempio quanto spiegato in questo tutorial potrebbe anche essere utilizzato per pianificare un backup automatico database mysql... niente male, vero?

Piaciuto l'articolo? Lascia un commento!

EmoticonEmoticon