L’automatisation des backups, c’est comme le brossage de dents automatique, mais pour ta base de données. Faire des sauvegardes régulières, ça sauve le monde (enfin, tes données) des catastrophes. Personne n’a envie de recevoir un message à 3h du mat’ disant que le serveur est down, et de réaliser que le dernier backup date d’il y a deux semaines. L’automatisation règle ce souci : fini les prises de risque à cause de l’humain.
Il existe plein d’outils pour automatiser tout ça, mais aujourd’hui on va causer des deux plus populaires :
cron— le planificateur de tâches universel et archi-connu sous Linux.pg_cron— une extension PostgreSQL qui permet de lancer des tâches direct depuis le serveur de base de données.
L’extension pg_cron utilise le service cron sous le capot. Ce service n’est dispo que sous Linux !
C’est parti !
Installer pg_cron
pg_cron est une extension PostgreSQL qui permet de planifier des tâches automatiques direct dans la base. C’est stylé, pratique, et ça transforme ton PostgreSQL en mini centre opérationnel.
Étapes d’installation :
- Assure-toi d’utiliser PostgreSQL 10+, parce que
pg_cronne marche que sur les versions récentes. Installe l’extension avec le gestionnaire de paquets de ta distrib. Pour Ubuntu, par exemple :
sudo apt install postgresql-<version>-cronRemplace
<version>par la version de PostgreSQL installée sur ta machine.Active l’extension dans la config PostgreSQL. Ouvre le fichier
postgresql.confet ajoute :shared_preload_libraries = 'pg_cron'Pourquoi ?
pg_crona besoin que la librairie soit chargée au démarrage de PostgreSQL — c’est obligatoire.Redémarre le serveur PostgreSQL :
sudo systemctl restart postgresqlActive l’extension dans ta base :
CREATE EXTENSION pg_cron;
À ce stade, pg_cron est prêt à l’emploi !
Créer une tâche pour automatiser les backups
Le gros plus de pg_cron, c’est de pouvoir lancer des commandes à l’heure que tu veux. On va créer une tâche pour lancer pg_dump automatiquement.
Exemple :
SELECT cron.schedule(
'backup_nuit', -- nom de la tâche
'0 2 * * *', -- planification (toutes les nuits à 2h)
$$pg_dump -U username -F c -f /backups/university_backup.dump university$$ -- commande
);
On décrypte la magie :
'backup_nuit'— c’est le nom custom de la tâche, pour la retrouver facilement.'0 2 * * *'— c’est le format cron : tous les jours à 2h du mat’.- La commande entre
$$ $$: on lancepg_dumppour sauvegarder la baseuniversity.
Une fois la tâche créée, elle se lancera toute seule selon le planning !
Voir et supprimer les tâches pg_cron
Pour voir toutes les tâches existantes :
SELECT * FROM cron.job;
Si une tâche ne sert plus à rien, tu peux la virer comme ça :
SELECT cron.unschedule(job_id);
Remplace job_id par l’identifiant de la tâche récupéré avec la requête ci-dessus.
Utiliser cron pour automatiser
Si tu préfères la méthode Linux classique ou que pg_cron n’est pas dispo, le tout-puissant cron est là pour toi.
Créer une tâche avec cron
D’abord, vérifie que cron est installé et tourne :
sudo systemctl enable cron
sudo systemctl start cron
Maintenant, ajoute une tâche pour faire le backup. Ouvre l’éditeur pour configurer les tâches cron :
crontab -e
Ajoute cette ligne :
0 2 * * * pg_dump -U username -F c -f /backups/university_backup.dump university
Cette ligne magique va faire :
- À 2h du mat’ chaque jour (
0 2 * * *), elle va sauvegarder la baseuniversity. - Tous les backups seront stockés dans le fichier
/backups/university_backup.dump.
Après avoir sauvegardé le fichier crontab, la tâche planifiée va se lancer toute seule.
Logs d’exécution de cron
Parfois, c’est utile de savoir ce qui a foiré. Assure-toi que la sortie des commandes est bien envoyée dans un fichier log pour pouvoir analyser. Pour ça, ajoute une redirection à la commande :
0 2 * * * pg_dump -U username -F c -f /backups/university_backup.dump university >> /var/log/backup.log 2>&1
Maintenant, tout ce qui se passe pendant la tâche sera écrit dans /var/log/backup.log.
Comparaison pg_cron vs cron
Bon, on a deux outils bien puissants. Comment choisir ?
pg_cronest top si tu veux tout gérer et planifier direct dans PostgreSQL. C’est pratique, pas besoin de sortir de la base, et tu peux scaler tes tâches facilement.cronest plus universel. Tu peux t’en servir pour PostgreSQL mais aussi pour automatiser tout le reste.
| Caractéristique | pg_cron | cron |
|---|---|---|
| Facilité d’intégration | Intégré à PostgreSQL, mais nécessite une extension | Fonctionne pour tous les process |
| Installation | Faut installer l’extension | Déjà présent sur la plupart des Linux |
| Logs | Stockés dans PostgreSQL (table cron.job_run_details) |
Écrits dans les logs système (souvent /var/log/syslog) |
| Flexibilité | N’exécute que du SQL dans PostgreSQL | Peut lancer n’importe quelle commande, script ou binaire |
Vérifier l’exécution des tâches
Pour checker que le backup fonctionne, tu peux lancer la commande cron à la main :
pg_dump -U username -F c -f /backups/university_backup.dump university
C’est aussi utile de vérifier que les fichiers de backup sont bien dans le dossier, leur taille et la date de création. Par exemple :
ls -lh /backups/
Pense à checker les logs régulièrement et à t’assurer que les tâches tournent bien.
Se protéger des erreurs classiques
Erreur n°1 : "J’ai oublié de régler les droits !"
Si l’utilisateur qui lance cron n’a pas les droits pour exécuter pg_dump, la tâche ne marchera pas. Vérifie que l’utilisateur a bien accès à la base.
Erreur n°2 : "Le fichier n’est pas au bon endroit !"
Indique toujours le chemin complet pour les fichiers et les commandes. cron ne connaît pas ton environnement — le chemin complet est obligatoire : pg_dump -> /usr/bin/pg_dump.
Erreur n°3 : "Où sont mes logs ?"
N’oublie pas de rediriger la sortie de la commande vers un fichier log. Sinon, tu n’auras aucune info en cas de souci.
Maintenant, tu es prêt à automatiser les backups de ta base. Même si le serveur part en vacances sans prévenir, tes données seront safe !
GO TO FULL VERSION