Qu’est-ce que c’est l’extension pg_cron
L’extension « pg_cron » est une extension très pratique pour PostgreSQL. Elle permet d’ajouter des fonctionnalités de planification et d’exécution de tâches régulières directement dans la base de données. Cela élimine le besoin de dépendre d’un système de planification externe tel que cron sur les systèmes d’exploitation.
Avec « pg_cron », vous pouvez définir des tâches planifiées en utilisant la syntaxe cron bien connue. Cette syntaxe vous permet de spécifier des intervalles de temps précis, tels que chaque minute, chaque heure, chaque jour de la semaine, chaque mois, etc. Vous pouvez configurer des tâches pour s’exécuter selon vos besoins spécifiques.
L’une des fonctionnalités les plus intéressantes de « pg_cron » est la possibilité d’exécuter des requêtes SQL planifiées. Vous pouvez écrire des requêtes SQL pour effectuer des tâches de maintenance, des rapports, des extractions de données ou d’autres opérations programmées. Cela vous permet d’automatiser des tâches fréquentes et de les exécuter en fonction d’un calendrier précis.
En plus des requêtes SQL, « pg_cron » prend également en charge l’exécution de fonctions stockées planifiées. Cela signifie que vous pouvez écrire des fonctions complexes dans PostgreSQL et les programmer pour qu’elles s’exécutent à des moments spécifiques. Cela offre une flexibilité supplémentaire pour automatiser des tâches plus avancées ou personnalisées.
En utilisant « pg_cron », vous bénéficiez d’une intégration transparente des tâches planifiées au sein de votre base de données PostgreSQL. Vous pouvez gérer toutes vos tâches planifiées depuis PostgreSQL elle-même, ce qui facilite la gestion centralisée. Vous n’avez pas besoin de configurer un système de planification externe ni de vous soucier de synchroniser les tâches entre la base de données et le système d’exploitation.
Pour résumé, l’extension « pg_cron » offre la possibilité de planifier et d’exécuter des tâches régulières directement dans PostgreSQL. Elle utilise la syntaxe cron familière pour définir les horaires d’exécution. Vous pouvez exécuter des requêtes SQL ou des fonctions stockées, ce qui facilite l’automatisation de diverses tâches de maintenance et de traitement des données. Cela fait de « pg_cron » un outil puissant pour simplifier la gestion des tâches planifiées au sein de votre base de données PostgreSQL.
Prérequis
Voici les prérequis pour l’installation de l’extension « pg_cron » pour PostgreSQL, détaillés sous forme de points :
- installé sur le système.
- Bibliothèques de développement PostgreSQL :
– Pour Debian/Ubuntu : libpq-dev
– Pour CentOS/RHEL : postgresql-devel
– Pour Fedora : postgresql-devel - Outils de compilation (GCC, Make) :
– Pour Debian/Ubuntu : build-essential
– Pour CentOS/RHEL : « Development Tools » group
– Pour Fedora : « Development Tools » group
Vous devez vous assurer d’avoir les privilèges nécessaires pour installer des packages et compiler des logiciels sur votre système.
Il faut prendre en compte que ces prérequis sont généraux et peuvent varier en fonction de votre distribution Linux spécifique. Assurez-vous de consulter les ressources officielles et la documentation de l’extension « pg_cron » pour obtenir des instructions d’installation précises et à jour pour votre environnement.
Compatibilité de l’extension pg_cron avec différentes version PostgreSQL
Version de PostgreSQL | Compatibilité pg_cron |
PostgreSQL 9.5 | Non pris en charge |
PostgreSQL 9.6 | Compatible |
PostgreSQL 10 | Compatible |
PostgreSQL 11 | Compatible |
PostgreSQL 12 | Compatible |
PostgreSQL 13 | Compatible |
PostgreSQL 14 | Compatible |
Installation de pg_cron
- Vérification de la version de PostgreSQL afin de savoir si elle est compatible avec l’extension pg_cron
![](https://dba-expert-consulting.fr/wp-content/uploads/2023/06/image.png)
2. Installation de pg_cron via les package
Commande : sudo yum install pg_cron_version
![](https://dba-expert-consulting.fr/wp-content/uploads/2023/06/image-1.png)
3. Configuration du fichier postgresql.conf
Renseigner les lignes suivantes dans le fichier postgresql.conf
![](https://dba-expert-consulting.fr/wp-content/uploads/2023/06/image-2.png)
4. Restart du service PostgreSQL
Commande : systemctl restart postgresql
Dans votre fichier de log vous devez avoir un quelque chose de similaire tous cela va dépendre de votre configuration.
![](https://dba-expert-consulting.fr/wp-content/uploads/2023/06/image-3.png)
5. Voir si l’extension pg_cron est bien enregistré
Commande : select name, setting, sourcefile from pg_settings where name =’shared_preload_libraries’ ;
![](https://dba-expert-consulting.fr/wp-content/uploads/2023/06/image-4.png)
6. Création de l’extension pg_cron
Commande : create extension pg_cron ;
![](https://dba-expert-consulting.fr/wp-content/uploads/2023/06/image-5.png)
7. Voir si l’extension est bien ajouter
Commande : select * from pg_extension ;
![](https://dba-expert-consulting.fr/wp-content/uploads/2023/06/image-6.png)
Utilisation de pg_cron
Pour programmer une tâche, nous allons utiliser la procédure “schedule” qui est présenter dans le schéma suivant.
![](https://dba-expert-consulting.fr/wp-content/uploads/2023/06/image-7.png)
Création d’une tache répétitive
- Afin de créer une tâche répétitive, il faut la commande suivante :
Commande : SELECT cron.schedule(‘nom_de_la_tâche’, ‘* * * * *’, ‘INSERT INTO CRON (name, last_name) VALUES (6, »jhon », »cron »)’);
Cette commande va me permettre de créer une tâche pour chaque minute.
![](https://dba-expert-consulting.fr/wp-content/uploads/2023/06/image-8.png)
Mettre en pause une tâche
Pg_cron fonctionne avec un boolean soit FALSE « f » soit TRUE « t ».
FALSE = non activé
TRUE= Activé
- Dans le but de stopper une tâche avec pg_cron il faut utiliser la commande suivante :
Commande: Update cron.job set active=’f’ where jobid=oid de votre tâche;
![](https://dba-expert-consulting.fr/wp-content/uploads/2023/06/image-9.png)
Supprimer une tâche
Afin d’arrêter une tâche, il faut exécuter la commande unschedule afin de supprimer une tâche existante.
Commande : select * from cron.unschedule(oid de votre tâche);
![](https://dba-expert-consulting.fr/wp-content/uploads/2023/06/image-10.png)