Академический Документы
Профессиональный Документы
Культура Документы
Sommaire
• 1 - Présentation
• 1.1 - Définition de "l'Event Scheduler"
• 1.2 - Utilité du programmateur d'évènements
• 2 - Configuration du serveur
• 2.1 - Prérequis
• 2.2 - Etat d'activité du programmateur d'évènements
• 2.2.1 - Activation, désactivation et suspension depuis le fichier de configuration
• 2.2.2 - Activation, désactivation et suspension par option de la ligne de
commande de mysqld-nt
• 2.2.3 - Activation et suspension par requête SQL
• 2.3 - Privilèges
• 2.3.1 - Privilèges nécessaires
• 2.3.2 - Attribution des privilèges
• 3 - Manipulation des évènements
• 3.1 - Modèle et jeu d'essai pour illustrer nos exemples.
• 3.2 - Programmation de nouveaux évènements
• 3.2.1 - Syntaxe
• 3.2.2 - Exemples de programmation d'évènements
• 3.3 - Modification de la programmation des évènements
• 3.3.1 - Syntaxe
• 3.3.2 - Exemples
• 3.4 - Suppression d'évènements
• 3.4.1 - Syntaxe
• 3.4.2 - Exemples
• 3.5 - Activation d'un évènement
• 3.5.1 - Syntaxe
• 3.5.2 - Exemple
• 3.6 - Désactivation d'un évènement
• 3.6.1 - Syntaxe
• 3.6.2 - Exemple
• 3.7 - Connaître l'état d'activation d'un évènement
• 4 - Suivi et analyse des évènements
• 4.1 - Listing des évènements
• 4.1.1 - La table event du schéma mysql
• 4.1.2 - La procédure SHOW EVENTS
• 4.1.3 - La consultation des évènements depuis le schéma d'informations
• 4.2 - Journal d'erreur
• 5 - Évènements administratifs intéressants.
• 5.1 - Exemples
• 5.2 - Précautions à prendre.
• 6 - Conclusion sur le gestionnaire de MySQL
• 6.1 - Avantages du gestionnaire d'évènements de MySQL
• 6.2 - Manques du gestionnaire d'évènement de MySQL
• 7 - Ressources
1 - Présentation
1.1 - Définition de "Event Scheduler"
2 - Configuration du serveur
2.1 - Les prérequis
A la date d'écriture de cet article, les versions 5.1.x sont des versions
de développement et ne sont pas suffisamment stables pour être
déployées sur un environnement de production.
A ce jour, la version stable est la 5.0.22. Quant à la version "béta"
actuelle, il s'agit de la version 5.1.11-beta.
• L'état 0 signifie que le service est volontairement coupé et ne pourra pas être
activé sans un redémarrage et une modification des paramètres de configuration.
• L'état 1 signifie que le service est actif.
• L'état 2 signifie que le service est suspendu. Néanmoins une requête SQL peut à
tout moment le réactiver
2.3 - Privilèges
Pour tester les évènements, nous allons disposer d'une table nommée
DECLENCHEUR. Cette table va illustrer tous les exemples. La table
DECLENCHEUR contient trois champs :
Le script suivant :
Nous allons alors nous déconnecter pour nous reconnecter en tant que
UTILISATEUR.
3.2.1 - Syntaxe
CREATE EVENT [IF NOT EXISTS] nom_evenement
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'commentaire']
DO requete_sql;
schedule:
AT timestamp [+ INTERVAL intervalle]
| EVERY intervalle [STARTS timestamp] [ENDS timestamp]
intervalle:
quantite {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
Le mot clef EVERY indique que l'évènement est récurrent. Il est suivi
par l'intervalle entre chaque répétition.
Exemple 1.2 - Insérer une ligne dans la table DECLENCHEUR dans deux
minutes.
Exemple 1.3 - Lancer (une seule fois) une procédure stockée à 03h50 du 1er
janvier 2010.
Exemple 1.4.a - Insérer une ligne dans la table DECLENCHEUR chaque jour à
04h00 du matin.
Exemple 1.4.b - Insérer une ligne dans la table DECLENCHEUR chaque jour à
04h00 du matin à partir de demain matin 4 heures.
Exemple 1.5 - Pendant une minute, insérer une ligne dans la table
DECLENCHEUR toutes les 8 secondes.
3.3.1 - Syntaxe
ALTER EVENT nom_evenement
[ON SCHEDULE schedule]
[RENAME TO nouveau_nom_evenement]
[ON COMPLETION [NOT] PRESERVE]
[COMMENT 'commentaire']
[ENABLE | DISABLE]
[DO requete_sql]
3.3.2 - Exemples
Exemple 2.1 - Renommer l'exemple 1.5.
3.4.1 - Syntaxe
DROP EVENT [IF EXISTS] nom_evenement
3.4.2 - Exemples
Exemple 3.1 - Suppression de l'exemple 1.1.
3.5.2 - Exemple
Exemple 4.1 - Activation de l'évènement EXEMPLE_1_4_b.
3.6.1 - Syntaxe
ALTER EVENT nom_evenement DISABLE;
3.6.2 - Exemple
Exemple 5.1 - Désactivation de l'évènement EXEMPLE_1_4_b.
mysql>
SELECT EVENT_NAME, STATUS
FROM INFORMATION_SCHEMA.EVENTS
WHERE EVENT_NAME = 'EXEMPLE_1_2'
AND EVENT_SCHEMA = 'article';
+-------------+---------+
| EVENT_NAME | STATUS |
+-------------+---------+
| EXEMPLE_1_2 | ENABLED |
+-------------+---------+
1 row in set (0.00 sec)
mysql>
SELECT EVENT_NAME, STATUS
FROM INFORMATION_SCHEMA.EVENTS
WHERE EVENT_SCHEMA = 'article';
+---------------------+---------+
| EVENT_NAME | STATUS |
+---------------------+---------+
| EXEMPLE_1_2 | ENABLED |
| EXEMPLE_1_3 | ENABLED |
| EXEMPLE_1_4_a | ENABLED |
| EXEMPLE_1_4_b | ENABLED |
| NOUVEAU_EXEMPLE_1_5 | ENABLED |
+---------------------+---------+
5 rows in set (0.01 sec)
mysql>SHOW EVENTS\G
Empty set (0.00 sec)
5 - Évènements administratifs
intéressants.
Dans ce chapitre, sont présentés un ensemble d'évènements qui
peuvent automatiser certaines tâches de l'administrateur de base de
données. Le grand avantage du programmateur d'évènements est qu'il
nous rend "indépendant" du système d'exploitation.
5.1 - Exemples
Exemple 5.1 - Sauvegarde quotidienne d'une table sans interruption.
Pour cet exemple, nous utilisons le compte root. Sinon il faut donner le
privilège FILE à l'utilisateur UTILISATEUR. Dans le répertoire des
données de MySQL ( mysql/data/ par défaut) doit exister le sous-
répertoire sauvegarde
mysql>DELIMITER |
CREATE EVENT EXEMPLE_RESTORE
ON SCHEDULE AT CURRENT_DATE + INTERVAL 1 DAY + INTERVAL 5 HOUR
DO BEGIN
DROP TABLE ARTICLE.DECLENCHEUR;
RESTORE TABLE ARTICLE.DECLENCHEUR FROM 'sauvegarde/';
END |
Query OK, 1 row affected, 1 warning (0.00 sec)
DELIMITER ;
7.1 - Ressources
Voici un ensemble de ressources qui vont vous permettre
d'approfondir le sujet