web-dev-qa-db-fra.com

Comment sauvegarder / restaurer dans PostgreSQL pgAdmin 4?

Je pense donc que c'est quelque chose qui devrait être très basique et facile à faire, peut-être que je ne fais pas les choses correctement.

Je veux faire l'équivalent des sauvegardes SQL Server. Je veux créer l'équivalent d'un fichier .bak complet et pouvoir restaurer une base de données à son état d'origine.

Jusqu'à présent, j'ai essayé de nombreuses façons différentes dans PgAdmin4 pour créer un fichier de sauvegarde à partir d'une base de données fraîchement créée. Je migre mon schéma qui crée un tas de tables, puis effectue une restauration sur le fichier créé précédemment. Ce que j'attends après la restauration, c'est que toutes les tables que j'ai créées disparaissent, je m'attends à ce que la base de données soit dans l'état exact où elle était lorsque j'ai pris la sauvegarde.

J'ai essayé de nombreuses options différentes, notamment l'inclusion des commandes Créer/Déposer une base de données préservant/ne sauvegardant pas les données lors de la sauvegarde/restauration, mais je n'ai pas eu de chance.

Quelqu'un peut-il m'aider ici?

J'utilise des commandes pg_dump mydb -Fc > db et pg_restore db. Peut-être qu'il y a des paramètres magiques qui me manquent pour qu'il fasse ce que je demande ci-dessus?

A essayé pg_restore --clean db, mêmes résultats.

Le problème est que je crée ma base de données, fraîche avec rien en elle, en faire une sauvegarde, créer des tables, restaurer la sauvegarde et les tables que j'ai créées sont toujours là. Je veux une méthode de restauration qui place la base de données dans le même état que lors de sa sauvegarde.

6
James

Réponse wiki communautaire :

Pour contourner ce problème, oubliez pgAdmin, exécutez simplement pg_dump depuis la ligne de commande.

Voir 25.1. SQL Dump dans la documentation de sauvegarde et restauration.

Également à partir de saisie manuelle pour pg_restore:

-c
--clean

Nettoyez (supprimez) les objets de base de données avant de les recréer. (Sauf si --if-exists est utilisé, cela pourrait générer des messages d'erreur inoffensifs, si aucun objet n'était présent dans la base de données de destination.)

-C
--create
Créez la base de données avant de la restaurer. Si --clean est également spécifié, supprimez et recréez la base de données cible avant de vous y connecter.

Lorsque cette option est utilisée, la base de données nommée avec -d est utilisé uniquement pour émettre le DROP DATABASE et CREATE DATABASE commandes. Toutes les données sont restaurées dans le nom de la base de données qui apparaît dans l'archive.

... ou supprimez simplement la base de données manuellement avant de la restaurer.

De Pourquoi pg_restore revient avec succès mais ne restaure pas réellement ma base de données? sur Stack Overflow, vous devez également spécifier un --dbname lors de la connexion, sinon rien ne sera restauré.

1
user126897

Vous pouvez trouver les documents utiles

Cela me semble comme pg_dump est "La boîte de dialogue de sauvegarde" et pg_dumpall est "La boîte de dialogue du serveur de sauvegarde".

  • La boîte de dialogue de sauvegarde

    Utilisation de pg_dump utilitaire, pgAdmin fournit un moyen simple de créer une sauvegarde au format texte brut ou archivé. Vous pouvez ensuite utiliser une application client (comme psql ou l'éditeur de requêtes) pour restaurer un fichier de sauvegarde en texte brut, ou utiliser Postgres pg_restore utilitaire pour restaurer une sauvegarde archivée. Le pg_dump L'utilitaire doit avoir un accès en lecture à tous les objets de base de données que vous souhaitez sauvegarder.

  • La boîte de dialogue du serveur de sauvegarde

    Utilisez la boîte de dialogue Serveur de sauvegarde pour créer un script en texte brut qui recréera le serveur sélectionné. Vous pouvez utiliser l'outil de requête pgAdmin pour lire un script en texte brut et recréer le serveur.

1
Evan Carroll

Je crois que le --clean paramètre que vous avez trouvé utile dans pg_restore se traduit par l'option "Nettoyer avant la restauration" dans l'onglet "Options de restauration" de la boîte de dialogue de restauration de pgAdmin 4.

Cette option est nécessaire si vous souhaitez que le processus de restauration supprime toutes les tables/données existantes avant de restaurer votre sauvegarde.

0
David