Astuces techniques : Comment sauvegarder et restaurer la base de données Postgres ?
Karan Singh
19 juin 2013
1 min read

Points Clés
Les sauvegardes PostgreSQL peuvent cibler une seule table, une seule base de données ou toutes les bases de données selon vos besoins.
pg_dumpcrée un fichier texte SQL contenant les DDL et les données nécessaires pour recréer la table ou la base de données cible.pg_dumpallsauvegarde chaque base de données sur l'instance Postgres.La restauration se fait avec
psql, qui exécute le dump SQL dans la base de données cible.Les restaurations au niveau de la table nécessitent de s'assurer que la table n'existe pas déjà pour éviter les conflits.
Lors de la sauvegarde de tables individuelles, soyez attentif aux dépendances relationnelles.
Les dumps peuvent être effectués à partir de Postgres local et restaurés sur des instances distantes.
Les sauvegardes incluent les commandes
CREATE,ALTER, etCOPYen fonction de ce qui est exporté.Une stratégie de sauvegarde appropriée dépend de la compréhension des relations de tables, de l'utilisation du schéma et des environnements de déploiement.
Assurez toujours l'intégrité des données en effectuant des sauvegardes qui incluent les tables référencées lorsque cela est nécessaire.
Points forts des Q&A
Que fait réellement pg_dump ?
pg_dumpgénère un fichier SQL basé sur du texte contenant l'ensemble complet des commandes nécessaires pour recréer une table ou une base de données exactement comme elle existait au moment de la sauvegarde.Puis-je sauvegarder juste une table au lieu d'une base de données complète ?
Oui. Utilisez
pg_dump --table TABLENAMEpour exporter une table spécifique. Si des tables portant le même nom existent dans différents schémas, utilisez--schemapour spécifier le bon.Devrais-je m'inquiéter des tables associées lors de la sauvegarde d'une seule table ?
Absolument. PostgreSQL est relationnel, donc d'autres tables peuvent faire référence à celle que vous sauvegardez. Si vous restaurez une seule table sans celles qui lui sont liées, vous risquez de briser l'intégrité référentielle.
Comment sauvegarder une base de données complète ?
Exécuter une commande comme :
pg_dump -U <user> <database> -f <output.sql>Cela exporte toutes les tables, définitions de schéma, index et données pour cette base de données.
Que fait pg_dumpall ?
pg_dumpallsauvegarde chaque base de données sur le serveur dans un seul fichier SQL. C’est utile lors de la migration ou de la création d'un instantané d'une instance Postgres entière.Puis-je restaurer une table dans une base de données existante ?
Oui. Utilisez
psql -U <user> -f <file.sql> <database>.Mais assurez-vous que la table n'existe pas déjà — sinon vous obtiendrez des erreurs "existe déjà" lors de la restauration.
Que se passe-t-il lors d'une restauration complète de la base de données ?
Le fichier de restauration s'exécute :
CREATE TABLEALTER TABLECOPY(pour les données de la table)
rétablissant la base de données à son état exact au moment du dump.
Puis-je restaurer sur un serveur différent de celui à partir duquel j'ai effectué la sauvegarde ?
Oui. Les dumps sont portables. Vous pouvez effectuer une sauvegarde localement et la restaurer sur une instance Postgres distante, à condition que les versions soient compatibles.
Est-ce que pg_dump affecte la base de données en cours d'exécution ?
Non. Cela fonctionne via des requêtes SQL et ne verrouille pas l'ensemble de la base de données. Il capture en toute sécurité une image instantanée cohérente.
Comment restaurer toutes les bases de données à partir d'un fichier pg_dumpall ?
Utilisation :
psql -U <user> -f all_dump.sqlCeci recrée chaque base de données trouvée dans le dump.



