pg_dumpall — extraire une grappe de bases de données PostgreSQL™ dans un fichier de script
pg_dumpall [ option ...]
pg_dumpall est un outil d'extraction (« sauvegarde ») de toutes les bases de données PostgreSQL™ d'une grappe vers un fichier script. Celui-ci contient les commandes SQL utilisables pour restaurer les bases de données avec psql(1). Cela est obtenu en appelant pg_dump(1) pour chaque base de données de la grappe. pg_dumpall sauvegarde aussi les objets globaux, communs à toutes les bases de données. (pg_dump ne sauvegarde pas ces objets.) Cela inclut aussi les informations concernant les utilisateurs et groupes des bases de données ainsi que les droits d'accès s'y appliquant.
Puisque pg_dumpall lit les tables de toutes les bases de données, il est préférable d'avoir les droits de superutilisateur de la base de données pour obtenir une sauvegarde complète. De plus, il faut détenir des droits superutilisateur pour exécuter le script produit, afin de pouvoir créer les utilisateurs, les groupes et les bases de données.
Le script SQL est écrit sur la sortie standard. Les opérateurs shell doivent être utilisés pour la rediriger dans un fichier.
pg_dumpall se connecte plusieurs fois au serveur PostgreSQL™ (une fois par base de données). Si l'authentification par mot de passe est utilisé, un mot de passe est demandé à chaque tentative de connexion. Il est intéressant de disposer d'un fichier ~/.pgpass dans de tels cas. Voir Section 29.13, « Fichier de mots de passe » pour plus d'informations.
Les options suivantes, en ligne de commande, contrôlent le contenu et le format de la sortie.
Seules les donnéessont sauvegardées, pas le schéma (définition des données).
Les commandes SQL de nettoyage (suppression) des bases de données avant leur recréation sont incluses. Des commandes DROP sont également ajoutées pour les rôles et les tablespaces.
Les données sont sauvegardées sous la forme de commandes INSERT (plutôt que des COPY ). Cela ralentit la restauration ; c'est principalement utile pour créer des sauvegardes qui peuvent être chargées dans des bases de données autres que PostgreSQL™. La restauration peut toutefois échouer si l'ordre des colonnes a été modifié. L'option -D est plus sûre, bien que plus lente.
Les données sont sauvegardées sous la forme de commandes INSERT avec les noms de colonnes explicites (INSERT INTO table ( colonne , ...) VALUES ...). Cela ralentit considérablement la restauration ; c'est principalement utile pour créer des sauvegardes qui peuvent être chargées dans des bases de données autres que PostgreSQL™.
Seuls les objets globaux sont sauvegardés (rôles et tablespaces), pas les bases de données.
Toute différence de version entre pg_dumpall et le serveur de bases de données est ignorée.
pg_dumpall peut gérer des bases de données de versions précédentes de PostgreSQL™, mais les très anciennes versions ne sont plus supportées (avant la 7.0). Cette option peut être utilisée pour surcharger la vérification de la version (si pg_dumpall échoue, il ne faudra pas nier avoir été averti).
Les identifiants des objets (OID) sont sauvegardés comme faisant partie des données de chaque table. Cette option est utilisée si l'application référence les colonnes OID (par exemple, dans une contrainte de clé étrangère). Sinon, cette option ne doit pas être utilisée.
Les commandes permettant de positionner les propriétaires des objets à ceux de la base de données originale. Par défaut, pg_dumpall lance les instructions ALTER OWNER ou SET SESSION AUTHORIZATION pour configurer le propriétaire des éléments créés. Ces instructions échouent lorsque le script est lancé par un utilisateur ne disposant pas des droits de superutilisateur (ou ne possédant pas les droits du propriétaire de tous les objets compris dans ce script). Pour que ce qui devient alors propriétaire de tous les objets créés, l'option -O doit être utilisée.
Seules les définitions des objets (schéma), sans les données, sont sauvegardées.
Précise le nom du superutilisateur à utiliser pour la désactivation des déclencheurs. Cela n'a d'intérêt que lorsque --disable-triggers est utilisé. (Il est en général préférable de ne pas utiliser cette option et de lancer le script résultant en tant que superutilisateur.)
Indique l'utilisation du mode verbeux. Ainsi pg_dumpall affiche les heures de démarrage/arrêt dans le fichier de sauvegarde et les messages de progression sur la sortie standard. Il active également le mode verbeux dans pg_dump.
Les droits d'accès (commandes grant/revoke) ne sont pas sauvegardés.
L'utilisation du dollar comme guillemet dans le corps des fonctions est désactivée. Celles-ci sont mises entre guillemets en accord avec la syntaxe du standard SQL.
Cette option n'est utile que lors de la création d'une sauvegarde des seules données. pg_dumpall inclut les commandes de désactivation temporaire des déclencheurs sur les tables cibles pendant le rechargement des données. Cette option est utile lorsqu'il existe des vérifications d'intégrité référentielle ou des déclencheurs sur les tables qu'on ne souhaite pas voir appelés lors du rechargement des données.
Actuellement, les commandes émises par --disable-triggers nécessitent d'être lancées par un superutilisateur. Il est donc impératif de préciser le nom du superutilisateur avec -S ou, préférentiellement, de lancer le script résultant en tant que superutilisateur.
Les commandes SET SESSION AUTHORIZATION du standard SQL sont affichées à la place des commandes ALTER OWNER pour préciser le propriétaire de l'objet. Cela améliore la compatibilité de la sauvegarde vis-à-vis des standard. Toutefois, du fait de l'ordre d'apparition des objets dans la sauvegarde, la restauration peut ne pas être correcte.
Les options suivantes en ligne de commande contrôlent les paramètres de connexion à la base de données.
Précise le nom d'hôte de la machine sur laquelle le serveur de bases de données est en cours d'exécution. Si la valeur commence avec un slash, elle est utilisée comme répertoire du socket de domaine Unix. La valeur par défaut est prise à partir de la variable d'environnement PGHOST, si elle est initialisée, sinon une connexion socket de domaine Unix est tentée.
Précise le port TCP ou l'extension du fichier socket de domaine Unix local sur lequel le serveur est en écoute des connexions. La valeur par défaut est la variable d'environnement PGPORT, si elle est initialisée, ou la valeur utilisée lors de la compilation.
Utilisateur utilisé pour initier la connexion.
Le mot de passe est obligatoirement demandé. Cela se produit automatiquement si le serveur réclame une authentification par mot de passe.
Paramètres de connexion par défaut
Cet outil, comme la plupart des autres outils PostgreSQL™, utilise aussi les variables d'environnement supportées par la bibliothèque libpq (voir Section 29.12, « Variables d'environnement »).
Comme pg_dumpall appelle pg_dump en interne, certains messages de diagnostique se réfèrent en fait à pg_dump.
Une fois la restauration effectuée, il est conseillé de lancer ANALYZE sur chaque base de données, de façon à ce que l'optimiseur dispose de statistiques utiles. vacuumdb -a -z peut également être utilisé pour analyser toutes les bases de données.
pg_dumpall requiert que tous les tablespaces nécessaires existent avant la restauration. Dans le cas contraire, la création de la base échouera pour une base qui ne se trouve pas dans l'emplacement par défaut.
Sauvegarder toutes les bases de données :
$ pg_dumpall > db.out
Recharger cette base de données :
$ psql -f db.out postgres
(La base de données utilisée pour la connexion initiale n'a pas d'importance ici car le fichier de script créé par pg_dumpall contient les commandes nécessaires à la création et à la connexion aux bases de données sauvegardées.)