Restauration logique

pg_restore sous PgAdmin

La restauration de données peut s'effectuer avec l'outil pg_restore pour les formats binaires et avec psql pour les sauvegardes en format texte SQL.

Méthode

Avec pgadmin, se positionner dans une base de données, puis clic droit → restaurer :

Constater que seul les formats personnalisé ou tar et répertoire sont disponibles.

Nombre de tâches (--jobs ) : Exécute les parties les plus consommatrices en temps de pg_restore -- celles des chargements de données, créations d'index et créations de contraintes -- en utilisant plusieurs jobs concurrents. Cette option peut réduire de beaucoup le temps pour restaurer une grosse base de données pour un serveur fonctionnant sur une machine multi-processeurs. La valeur optimale pour cette option dépend de la configuration matérielle du serveur, du client et du réseau. Les facteurs incluent le nombre de cœurs CPU et la configuration disque. Un bon moyen pour commencer est le nombre de cœurs CPU du serveur, mais une valeur plus grande que ça peut amener des temps de restauration encore meilleurs dans de nombreux cas. Bien sûr, les valeurs trop hautes apporteront des performances en baisse.

Seuls les formats d'archivage personnalisé et répertoire sont supportés avec cette option

Rôle (--role ) : Indique un nom de rôle utilisé pour la restauration. Cette option fait que pg_restore exécute un SET ROLE nom_rôle après connexion à la base de données. C'est utile quand l'utilisateur authentifié (indiqué par l'option -U) n'a pas les droits demandés par pg_restore, mais peut devenir le rôle qui a les droits requis. Certains installations ont une politique contre la connexion en super-utilisateur directement, et utilisent cette option pour permettre aux restaurations de se faire sans violer cette règle.

MéthodeOnglet "Options de restauration"

Sections : Restaure seulement la section nommée (Par défaut toutes les sections).

Type des objets :

  • Données uniquement : (--data-only). Restaure seulement les données, pas les schémas (définitions des données). Les données des tables, les Large Objects, et les valeurs des séquences sont restaurées si elles sont présentes dans l'archive.

Cette option est similaire à --section=data mais, pour des raisons historiques, elle n'est pas identique.

  • Schéma uniquement (--schema-only ) : Restaure seulement le schéma (autrement dit, la définition des données), mais pas les données, à condition que cette définition est présente dans l'archive.

Ne pas enregistrer :

  • propriétaire (--no-owner) : Ne pas donner les commandes initialisant les propriétaires des objets pour correspondre à la base de données originale. Par défaut, pg_restore lance des instructions ALTER OWNER ou SET SESSION AUTHORIZATION pour configurer le propriétaire des éléments du schéma créé. Ces instructions échouent sauf si la connexion initiale à la base de données est réalisée par un superutilisateur (ou le même utilisateur que le propriétaire des objets du script)

  • Droits (--no-privileges ) : Empêche la restauration des droits d'accès (commandes grant/revoke).

  • Tablespace (--no-tablespaces )  : Ne sélectionne pas les tablespaces. Avec cette option, tous les objets seront créés dans le tablespace par défaut lors de la restauration.

MéthodeOption de restauration (suite)

Requête :

  • Inclure l'instruction CREATE DATABASE (--create ) : Crée la base de données avant de la restaurer. Si l'option --clean est aussi indiquée, supprime puis crée de nouveau la base de données cible avant de s'y connecter.

  • Nettoyer avant restauration (--clean): Nettoie (supprime) les objets de la base de données avant de les créer.

  • Transaction simple (--single-transaction) : Exécute la restauration en une seule transaction (autrement dit, toutes les commandes de restauration sont placées entre un BEGIN et un COMMIT). Ceci assure l'utilisateur que soit toutes les commandes réussissent, soit aucun changement n'est appliqué.

Désactiver :

  • trigger (--disable-triggers ) : Cette option n'est pertinente que lors d'une restauration des données seules. Elle demande à pg_restore d'exécuter des commandes pour désactiver temporairement les déclencheurs sur les tables cibles pendant que les données sont rechargées. Utilisez ceci si vous avez des vérifications d'intégrité référentielle sur les tables que vous ne voulez pas appeler lors du rechargement des données. Actuellement, les commandes émises pour --disable-triggers doivent être exécutées par un superutilisateur

  • Aucune données pour les tables en échec (--no-data-for-failed-tables ) : Par défaut, les données de la table sont restaurées même si la commande de création de cette table a échoué (par exemple parce qu'elle existe déjà). Avec cette option, les données de cette table seront ignorées. Ce comportement est utile si la base cible contient déjà des données pour cette table. Par exemple, les tables supplémentaires des extensions de PostgreSQL comme PostGIS pourraient avoir déjà été créées et remplies sur la base cible ; indiquer cette option empêche l'ajout de données dupliquées ou obsolètes.

Divers / comportement  :

  • Message verbeux (--verbose ) : Mode verbeux. On décochera cette option lors de la restauration de gros fichiers de backup.

    Utilisez SET SESSION AUTHORIZATION (--use-set-session-authorization): Affiche les commandes SET SESSION AUTHORIZATION du standard SQL à la place des commandes ALTER OWNER pour déterminer le propriétaire de l'objet. Ceci rend la sauvegarde plus compatible avec les standards mais, suivant l'historique des objets dans la sauvegarde, pourrait restaurer correctement.

  • Sortie sur erreur (--exit-on-error) : Quitte si une erreur est rencontrée lors de l'envoi des commandes SQL à la base de données. La valeur par défaut est de continuer et d'afficher le nombre d'erreurs à la fin de la restauration.