pg_dump — c’est un outil en ligne de commande fourni avec PostgreSQL qui te permet d’exporter une base de données dans un fichier de sauvegarde. Ce fichier peut contenir soit juste la structure de la base, soit les données, soit les deux.
Le gros avantage de pg_dump, c’est que tu peux transférer des données entre serveurs, restaurer une base après un crash ou juste garder un archive pour longtemps. À noter : cet utilitaire est surtout fait pour les sauvegardes logiques (en utilisant des requêtes SQL), pas pour copier physiquement les fichiers de la base.
Syntaxe de base de la commande pg_dump
Pour faire une sauvegarde avec pg_dump, il suffit de lancer cette commande dans ton terminal :
pg_dump -U username -d database_name -f backup_file.sql
Voyons les parties de la commande :
-U username— indique le nom d’utilisateur PostgreSQL utilisé pour se connecter à la base.-d database_name— précise le nom de la base dont tu veux faire la sauvegarde.-f backup_file.sql— définit où sauvegarder le fichier backup. Ça peut être un chemin complet ou relatif.
Exemple : imaginons que tu as une base university et tu veux la sauvegarder dans university_backup.sql. La commande sera :
pg_dump -U postgres -d university -f university_backup.sql
PostgreSQL va alors te demander le mot de passe de l’utilisateur postgres pour autoriser l’accès aux données.
Astuce : si tu bosses sur un serveur local et que tu veux éviter de taper le mot de passe à chaque fois, configure le fichier .pgpass. Lis la doc officielle PostgreSQL pour plus d’infos.
Options et comment les utiliser
L’outil pg_dump est super flexible et tu peux l’adapter pour faire des sauvegardes avec plein de réglages différents :
- Faire un backup juste de la structure de la base
Si tu veux sauvegarder uniquement la structure de la base (genre pour la déployer sur un nouveau serveur), utilise le flag --schema-only. Exemple :
pg_dump -U postgres -d university --schema-only -f university_schema.sql
Ça va générer un script SQL avec juste les commandes CREATE TABLE, CREATE INDEX, etc., sans les données.
- Faire un backup juste des données
Parfois tu veux juste garder les données, sans la structure. Dans ce cas, utilise le flag --data-only :
pg_dump -U postgres -d university --data-only -f university_data.sql
Le fichier généré contiendra des commandes INSERT INTO pour restaurer tes données.
- Compresser la sauvegarde
Le fichier de backup peut vite devenir lourd, surtout si ta base a plein de tables et de données. Pour réduire la taille, utilise l’option --compress :
pg_dump -U postgres -d university -f university_backup.sql --compress=6
Le niveau de compression va de 0 (pas de compression) à 9 (compression max). Plus tu compresses, plus la sauvegarde prend du temps à se faire.
- Exporter au format binaire
Si tu veux une restauration plus rapide, tu peux sauvegarder au format binaire au lieu d’un script SQL texte :
pg_dump -U postgres -d university -Fc -f university_backup.dump
Le flag -Fc indique le format Custom, qui marche avec l’outil pg_restore.
Exemples de création de sauvegardes
Backup complet de la base
Imaginons que tu as une base company et tu veux faire un backup complet (structure + données) :
pg_dump -U postgres -d company -f company_backup.sql
Backup d’une seule table
Si tu veux sauvegarder juste une table, utilise l’option -t :
pg_dump -U postgres -d company -t employees -f employees_backup.sql
Ce fichier contiendra la structure et les données de la table employees uniquement.
Backup de plusieurs tables
Pour sauvegarder plusieurs tables, ajoute plusieurs options -t :
pg_dump -U postgres -d company -t employees -t departments -f selected_tables_backup.sql
Backup compressé
Pour gagner de la place, utilise le flag --compress ou crée direct un fichier compressé :
pg_dump -U postgres -d company -Fc -f company_backup_compressed.dump
Conseils utiles
Vérifie la taille de ton fichier backup. Si la sauvegarde est trop petite, c’est peut-être qu’il y a eu un souci. Utilise l’option --verbose pour avoir plus de détails sur le process de backup.
Automatise le process. Utilise cron ou pg_cron pour planifier des sauvegardes régulières. Pense à bien gérer la rotation des vieux backups pour éviter de saturer ton disque.
Teste tes copies pour être sûr qu’elles marchent. Restaure tes backups sur un serveur de test pour vérifier qu’ils sont OK.
Erreurs que tu peux rencontrer
Erreur d’authentification. Si tu n’as pas mis le bon utilisateur ou si tu as oublié le mot de passe, pg_dump va planter. Vérifie que tu as bien configuré le fichier .pgpass pour l’auth auto.
Erreur de connexion. Si le serveur PostgreSQL n’est pas lancé ou si tu t’es trompé dans le nom de la base, l’outil ne pourra pas faire la sauvegarde. Vérifie le nom de la base et que le serveur tourne bien.
Problème de droits d’accès. L’utilisateur avec lequel tu lances pg_dump doit avoir les droits pour lire la structure et les données. Utilise un rôle admin si possible.
GO TO FULL VERSION