Les EVENTS dans MySQL

Depuis la version 5.1.6, MySQL dispose d’un planificateur d’événements qui évite de recourir à des scripts que nous planifions avec le gestionnaire cron sous Linux. La méthode est bien plus sûre puisqu’elle évite que les mots de passe se baladent dans différents fichiers du serveur, en clair !

Activation du planificateur d’événements

Vous pouvez éditer le fichier my.ini ou my.cnf et ajouter dans la section [mysqld] la ligne event_scheduler=1. Vous devez alors redémarrer l’instance :

Vous pouvez aussi modifier à chaud ce paramètre par l’une ou l’autre des deux commandes ci-dessous :

Pour vérifier que le planificateur d’événements s’exécute sous MySQL, tapez :

SELECT @@global.event_scheduler

Vous pouvez, par ailleurs, vérifier le fonctionnement du planificateur d’événements avec la commande SHOW PROCESSLIST.

Réparation et optimisation planifiées de tables MyISAM

Cet événement planifié a pour objet de programmer tous les jours les commandes REPAIR et OPTIMIZE sur des tables MyISAM :

DROP EVENT IF EXISTS grc.e_repair_grc;
DELIMITER $$
CREATE EVENT grc.e_repair_grc
    ON SCHEDULE EVERY 1 DAY STARTS '2013-01-17 15:30:20'
	ENABLE
    DO 
	BEGIN
		DECLARE val_table VARCHAR(255);
		DECLARE val_schema VARCHAR(255);
		DECLARE val_sql VARCHAR(255);
		DECLARE cur_grc CURSOR FOR
			SELECT table_schema, table_name
			FROM information_schema.tables
			WHERE table_schema='grc';
		OPEN cur_grc;
		LOOP
			FETCH cur_grc INTO val_schema,val_table;
			SET @a=val_schema;
			SET @b=val_table;
			SET @s='REPAIR TABLE ?.?';
			PREPARE stmt FROM @s;
			EXECUTE stmt USING @a,@b ;
			DEALLOCATE PREPARE stmt;
			SET @s='OPTIMIZE TABLE ?.?';
			PREPARE stmt FROM @s;
			EXECUTE stmt USING @a,@b ;
			DEALLOCATE PREPARE stmt;
		END LOOP;
		CLOSE cur_grc;
	END
$$
DELIMITER ;

Vérifications d’usage

Le 1er contrôle à effectuer est de vérifier que votre « event » a bien été créé. Pour ce faire, vous pouvez employer deux méthodes distinctes :

Mais cela ne suffit pas. Il vous faudra contrôler dans les logs de MySQL que la commande programmée s’est correctement exécutée. Pour les activer, là-encore, vous disposez de deux méthodes.

Le fichier de logs du type host.log se situe par défaut à l’endroit où sont stockées les données.

Pour plus d’information sur la commande CREATE EVENT : Event Scheduler Configuration

Dsfc Dsfc

Les EVENTS dans MySQL
12 votes, 4.50 avg. rating (90% score)
Tags : , , , , , , , , , , , ,
Commentaires

Les évents du dauphin de MySQL ? ;-)

On peut programmer un dump des bases dans l’event scheduler ? Ça permettrait effectivement de pas coller des mots de passe un peu partout…

Je n’ai pas essayé. La commande SYSTEM ne peut fonctionner que sous Linux !

J’ai un petit problème avec la mise en place de l’évènement ci-dessus : je reçois « Unknown database ‘grc’ ».
Idem, bien sûr, si je lance la commande « use grc; » de la ligne dans la vérification.
Merci de votre initiative et de l’aide

@Jean-Yves

Il faut créer la base grc. Il s’agit ici d’une base d’exemple.

Merci !
Ca fonctionne nettement mieux comme ça ;-)

Laisser un commentaire

(requis)

(requis)


*