CodeGym /Cours /SQL SELF /Créer des sauvegardes de base avec pg_dump

Créer des sauvegardes de base avec pg_dump

SQL SELF
Niveau 43 , Leçon 2
Disponible

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 :

  1. 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.

  1. 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.

  1. 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.

  1. 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.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION