34 votes

Comment restaurer une base de données PostgreSQL à partir d'un fichier .tar ?

J'ai toutes les bases de données PostgreSQL sauvegardées lors des sauvegardes incrémentielles à l'aide de WHM, qui crée un $dbName. tar fichier.

Les données sont stockées dans ces fichiers .tar, mais je ne sais pas comment les restaurer dans les bases de données individuelles via SSH. En particulier l'emplacement du fichier.

Je l'ai utilisé :

pg_restore -d client03 /backup/cpbackup/daily/client03/psql/client03.tar

qui génère l'erreur "Impossible d'ouvrir le fichier d'entrée" : Permission refusée".

Toute aide est appréciée.

44voto

rgcb Points 595

J'ai trouvé la bonne chaîne de code, au cas où quelqu'un d'autre trouverait ce fil.

pg_restore -c -U postgres -d client03 -v "/tmp/client03.tar" -W

La répartition était la suivante http://www.postgresql.org/docs/7.3/static/app-pgrestore.html et un peu d'essais et d'erreurs.

Essentiellement...

-c to clean the database
-U to force a user
-d to select the database
-v verbose mode, don't know why
"$$" the location of the files to import in tmp to get around permission issues
-W to force asking for the password to the user (postgres)

J'espère que ce qui précède aidera quelqu'un d'autre.

3voto

StartupGuy Points 210

Lorsque j'ai utilisé PgAdmin III pour effectuer la restauration pour moi, cela a fonctionné sans problème en utilisant la commande suivante qu'il a construite lui-même :

pg_restore --host localhost --port 5432 --username "my_user_name" --dbname "my_db_name" --role "my_user_name" --no-password  --verbose "/Users/me/Desktop/backup_file.tar"

Note : pour éviter les avertissements, il est préférable que le rôle du propriétaire des objets du fichier de sauvegarde existe déjà sur le serveur cible. De plus, la base de données cible doit déjà être créée et appartenir à ce rôle.

1voto

nnamdi Points 11

Pour la version 9.5, exécutez ce qui suit en ligne de commande

pg_restore -W -c -U [username] -d [database_name] -v "[path to extracted tar]"

0voto

Stephen Thompson Points 1472

Je ne suis pas certain qu'il puisse importer un fichier .tar. Je ferais un

tar -zxvf client03.tar 

pour extraire ce qu'il y avait dans le fichier, et réessayez pg_restore. Je sais que pg_restore fonctionne, car nous avons la même méthode de restauration depuis les restaurations bare metal.

0voto

Nathan Pena Points 1

Le fichier ci-dessous a été généré pour moi à partir de pgAdmin iii en cliquant sur la base de données et en faisant un clic droit et sélectionner restaurer. J'ai navigué vers le fichier .tar que j'avais et cela s'est fait tout seul.

/usr/bin/pg_restore --host localhost --port 5434 --username "postgres" \
--dbname "dvdrental" --no-password  --schema public --verbose \
"/home/npena/Desktop/dvd/dvdrental.tar"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X