pg_dumpall
pg_dumpall — extraire une grappe de bases de données
PostgreSQL™ dans un fichier
de script
Description
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.
Options
Les options suivantes, en ligne de commande, contrôlent le contenu
et le format de la sortie.
-
-a,
--data-only
-
Seules les donnéessont sauvegardées, pas le schéma
(définition des données).
-
-c,
--clean
-
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.
-
-d,
--inserts
-
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.
-
-D,
--column-inserts,
--attribute-inserts
-
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™.
-
-g,
--globals-only
-
Seuls les objets globaux sont sauvegardés (rôles et
tablespaces), pas les bases de données.
-
-i,
--ignore-version
-
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).
-
-o,
--oids
-
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.
-
-O,
--no-owner
-
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.
-
-s,
--schema-only
-
Seules les définitions des objets (schéma), sans les données,
sont sauvegardées.
-
-S
username
,
--superuser=
username
-
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.)
-
-v,
--verbose
-
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.
-
-x,
--no-privileges,
--no-acl
-
Les droits d'accès (commandes grant/revoke) ne sont pas
sauvegardés.
-
--disable-dollar-quoting
-
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.
-
--disable-triggers
-
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.
-
--use-set-session-authorization
-
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.
-
-h
hôte
-
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.
-
-p
port
-
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.
-
-U
nomutilisateur
-
Utilisateur utilisé pour initier la connexion.
-
-W
-
Le mot de passe est obligatoirement demandé. Cela se produit
automatiquement si le serveur réclame une authentification
par mot de passe.
Environnement
-
PGHOST,
PGPORT,
PGUSER
-
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 »).
Notes
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.
Exemples
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.)
Voir aussi
Vérifier
pg_dump(1) pour
des détails sur les conditions d'erreur possibles.