Planificateur d'événements MySQL

MySQLMySQLBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à utiliser le planificateur d'événements (Event Scheduler) de MySQL pour automatiser des tâches. Le laboratoire vous guide tout au long de la procédure d'activation du planificateur d'événements, de la création d'un événement pour mettre à jour périodiquement les données d'une table, de la vérification de l'état d'exécution de l'événement et, enfin, de la suppression de l'événement.

La première étape consiste à vous connecter au serveur MySQL et à activer le planificateur d'événements à l'aide de commandes SQL. Vous vérifierez l'état du planificateur avant et après son activation. Ensuite, vous créerez un événement pour mettre à jour une table périodiquement. Le laboratoire vous guidera ensuite dans la vérification de l'état d'exécution de l'événement et, enfin, dans la suppression de l'événement lorsqu'il n'est plus nécessaire.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL mysql(("MySQL")) -.-> mysql/BasicKeywordsandStatementsGroup(["Basic Keywords and Statements"]) mysql(("MySQL")) -.-> mysql/SystemManagementToolsGroup(["System Management Tools"]) mysql/BasicKeywordsandStatementsGroup -.-> mysql/use_database("Database Selection") mysql/BasicKeywordsandStatementsGroup -.-> mysql/create_database("Database Creation") mysql/BasicKeywordsandStatementsGroup -.-> mysql/create_table("Table Creation") mysql/BasicKeywordsandStatementsGroup -.-> mysql/drop_table("Table Removal") mysql/BasicKeywordsandStatementsGroup -.-> mysql/select("Data Retrieval") mysql/BasicKeywordsandStatementsGroup -.-> mysql/insert("Data Insertion") mysql/BasicKeywordsandStatementsGroup -.-> mysql/update("Data Update") mysql/SystemManagementToolsGroup -.-> mysql/show_status("Status Overview") mysql/SystemManagementToolsGroup -.-> mysql/show_variables("Configuration Overview") subgraph Lab Skills mysql/use_database -.-> lab-550906{{"Planificateur d'événements MySQL"}} mysql/create_database -.-> lab-550906{{"Planificateur d'événements MySQL"}} mysql/create_table -.-> lab-550906{{"Planificateur d'événements MySQL"}} mysql/drop_table -.-> lab-550906{{"Planificateur d'événements MySQL"}} mysql/select -.-> lab-550906{{"Planificateur d'événements MySQL"}} mysql/insert -.-> lab-550906{{"Planificateur d'événements MySQL"}} mysql/update -.-> lab-550906{{"Planificateur d'événements MySQL"}} mysql/show_status -.-> lab-550906{{"Planificateur d'événements MySQL"}} mysql/show_variables -.-> lab-550906{{"Planificateur d'événements MySQL"}} end

Activer le planificateur d'événements (Event Scheduler)

Dans cette étape, nous allons activer le planificateur d'événements (Event Scheduler) dans MySQL. Le planificateur d'événements est un thread d'arrière-plan qui exécute les événements planifiés. Par défaut, il est désactivé. Nous devons l'activer pour créer et exécuter des événements.

Tout d'abord, connectons-nous au serveur MySQL en utilisant le client mysql. Ouvrez un terminal et exécutez la commande suivante :

mysql -u root -p

Vous serez invité à saisir le mot de passe de l'utilisateur root. Entrez le mot de passe que vous avez défini lors de l'installation de MySQL. Si vous n'avez pas défini de mot de passe, appuyez simplement sur Entrée.

Maintenant que vous êtes connecté au serveur MySQL, vous pouvez vérifier l'état actuel du planificateur d'événements. Exécutez la requête SQL suivante :

SHOW GLOBAL VARIABLES LIKE 'event_scheduler';

Vous devriez voir une sortie similaire à ceci :

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

Cela confirme que le planificateur d'événements est actuellement désactivé.

Pour activer le planificateur d'événements, exécutez la requête SQL suivante :

SET GLOBAL event_scheduler = ON;

Cette commande active le planificateur d'événements au niveau global.

Maintenant, vérifions que le planificateur d'événements est activé. Exécutez de nouveau la même requête SHOW GLOBAL VARIABLES :

SHOW GLOBAL VARIABLES LIKE 'event_scheduler';

Vous devriez maintenant voir une sortie similaire à ceci :

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

Cela confirme que le planificateur d'événements est maintenant activé.

Enfin, quittez le client MySQL en tapant exit et en appuyant sur Entrée.

exit

Vous avez activé avec succès le planificateur d'événements dans MySQL. Dans l'étape suivante, nous allons créer un événement pour mettre à jour les données périodiquement.

Créer un événement pour mettre à jour les données périodiquement

Dans cette étape, nous allons créer un événement MySQL qui met à jour une table périodiquement. Tout d'abord, nous devons créer une base de données et une table. Ensuite, nous allons créer l'événement pour mettre à jour la table toutes les minutes.

Tout d'abord, connectons-nous au serveur MySQL en utilisant le client mysql. Ouvrez un terminal et exécutez la commande suivante :

mysql -u root -p

Entrez le mot de passe de l'utilisateur root lorsque vous y êtes invité.

Maintenant, créons une base de données nommée test_db :

CREATE DATABASE IF NOT EXISTS test_db;

Ensuite, basculez sur la base de données test_db :

USE test_db;

Maintenant, créons une table nommée event_table avec deux colonnes : id (INT, clé primaire, auto-incrément) et value (INT) :

CREATE TABLE IF NOT EXISTS event_table (
    id INT AUTO_INCREMENT PRIMARY KEY,
    value INT
);

Insérons une valeur initiale dans la table :

INSERT INTO event_table (value) VALUES (0);

Maintenant, créons l'événement. L'événement mettra à jour la colonne value de la table event_table toutes les minutes. Exécutez l'instruction SQL suivante :

CREATE EVENT IF NOT EXISTS update_event
ON SCHEDULE EVERY 1 MINUTE
DO
  UPDATE event_table SET value = value + 1;

Cette instruction crée un événement nommé update_event. La clause ON SCHEDULE EVERY 1 MINUTE spécifie que l'événement doit s'exécuter toutes les minutes. La clause DO spécifie l'instruction SQL à exécuter lorsque l'événement s'exécute, qui incrémente la colonne value de 1.

Pour vérifier si l'événement a été créé, exécutez la requête SQL suivante :

SHOW EVENTS FROM test_db;

Vous devriez voir une sortie similaire à ceci :

+----------+---------------+-------------+-----------+----------+---------------------+---------------------+-----------+------------+-------------------+----------------------+--------------------+--------------------+
| Db       | Name          | Definer     | Time zone | Type     | Execute at          | Interval_value      | Interval_field | Starts              | Ends               | Status             | Originator          | character_set_client | collation_connection | db_collation         |
+----------+---------------+-------------+-----------+----------+---------------------+---------------------+-----------+------------+-------------------+----------------------+--------------------+--------------------+
| test_db  | update_event  | root@%      | SYSTEM    | RECURRING | NULL                | 1                   | MINUTE       | 2024-10-27 14:30:00 | NULL              | ENABLED            | 1                    | utf8mb4              | utf8mb4_0900_ai_ci   | utf8mb4_0900_ai_ci   |
+----------+---------------+-------------+-----------+----------+---------------------+---------------------+-----------+------------+-------------------+----------------------+--------------------+--------------------+
1 row in set (0.00 sec)

Cela confirme que l'événement a été créé et est activé.

Maintenant, quittez le client MySQL :

exit

L'événement s'exécutera désormais toutes les minutes, mettant à jour la colonne value de la table event_table. Dans l'étape suivante, nous vérifierons l'état d'exécution de l'événement.

Vérifier l'état d'exécution de l'événement

Dans cette étape, nous allons vérifier l'état d'exécution de l'événement que nous avons créé à l'étape précédente. Nous allons nous connecter au serveur MySQL et interroger la table event_table pour voir si la colonne value a été mise à jour. Étant donné que l'événement s'exécute toutes les minutes, nous devrions voir la valeur augmenter avec le temps.

Tout d'abord, connectons-nous au serveur MySQL en utilisant le client mysql :

mysql -u root -p

Entrez le mot de passe de l'utilisateur root lorsque vous y êtes invité.

Ensuite, basculez sur la base de données test_db :

USE test_db;

Maintenant, interrogeons la table event_table pour voir la valeur actuelle de la colonne value :

SELECT * FROM event_table;

Vous devriez voir une sortie similaire à ceci :

+----+-------+
| id | value |
+----+-------+
|  1 |     N |
+----+-------+
1 row in set (0.00 sec)

N est une valeur entière. Étant donné que l'événement s'exécute toutes les minutes, la valeur de N devrait être supérieure à la valeur initiale de 0 que nous avons insérée à l'étape précédente. Si vous venez de créer l'événement, attendez une ou deux minutes et exécutez à nouveau la requête. Vous devriez voir la valeur augmenter.

Pour vérifier plus en détail l'exécution de l'événement, vous pouvez vérifier le journal des erreurs de MySQL pour toute erreur liée à l'événement. Cependant, pour ce laboratoire (lab), nous supposerons que l'événement s'exécute correctement si la colonne value est mise à jour.

Vous pouvez exécuter la requête SELECT plusieurs fois, en attendant une minute entre chaque exécution, pour observer l'incrémentation de la colonne value. Cela confirme que l'événement s'exécute comme prévu.

Enfin, quittez le client MySQL :

exit

Vous avez vérifié avec succès l'état d'exécution de l'événement. Dans l'étape suivante, nous allons supprimer l'événement.

Supprimer l'événement

Dans cette étape, nous allons supprimer l'événement que nous avons créé dans les étapes précédentes. Supprimer un événement le retire du serveur MySQL, empêchant ainsi son exécution future.

Tout d'abord, connectons-nous au serveur MySQL en utilisant le client mysql :

mysql -u root -p

Entrez le mot de passe de l'utilisateur root lorsque vous y êtes invité.

Ensuite, basculez sur la base de données test_db :

USE test_db;

Maintenant, supprimons l'événement nommé update_event. Exécutez l'instruction SQL suivante :

DROP EVENT IF EXISTS update_event;

Cette instruction supprime l'événement s'il existe. La clause IF EXISTS empêche une erreur de se produire si l'événement n'existe pas.

Pour vérifier que l'événement a été supprimé, exécutez la requête SQL suivante :

SHOW EVENTS FROM test_db;

Vous devriez voir un ensemble de résultats vide, indiquant qu'il n'y a pas d'événements dans la base de données test_db :

Empty set (0.00 sec)

Alternativement, si vous voyez l'événement update_event dans la liste, cela signifie que l'événement n'a pas été supprimé avec succès. Vérifiez votre syntaxe SQL et réessayez.

Enfin, quittez le client MySQL :

exit

Vous avez supprimé avec succès l'événement. Ceci conclut le laboratoire (lab). Vous avez appris à activer le planificateur d'événements (Event Scheduler), à créer un événement pour mettre à jour des données périodiquement, à vérifier l'état d'exécution de l'événement et à supprimer l'événement.

Résumé

Dans ce laboratoire (lab), la première étape consiste à activer le planificateur d'événements (Event Scheduler) de MySQL, un thread d'arrière-plan chargé d'exécuter les événements planifiés. Cela implique de se connecter au serveur MySQL en utilisant le client mysql, de vérifier l'état actuel du planificateur d'événements (qui est initialement désactivé), puis de l'activer en utilisant la commande SET GLOBAL event_scheduler = ON;. L'activation réussie est confirmée en revérifiant la variable globale event_scheduler.

L'étape suivante présente la création d'un événement MySQL conçu pour mettre à jour périodiquement une table. Cela implique de définir la planification de l'événement et les instructions SQL qu'il exécutera.