Come ripristinare il database PostgreSQL dal file .tar?


20

Ho eseguito il backup di tutti i database PostgreSQL durante i backup incrementali utilizzando WHM, che crea un $ dbName. file tar .

I dati sono memorizzati in questi file .tar, ma non so come ripristinarli nei singoli database tramite SSH. In particolare il percorso del file.

Ho usato:

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

che genera l'errore "impossibile aprire il file di input: autorizzazione negata"

Qualsiasi assistenza è stata apprezzata.


L'utente con cui stai eseguendo questo comando ha accesso a quel file?
mat

Ciao Mat, potresti pensarlo (in esecuzione come root) ma hai appena risolto il problema dopo molte combinazioni e spostato il file .tar non elaborato in tmp .... pg_restore -c -i -U postgres -d client03 -v "/tmp/client03.tar" -W Il -W alla fine è stato il trucco principale che ha forzato l'inserimento della password come richiesto, che ha permesso di rimettere tutto insieme.
Stephen,

Risposte:


24

Trovato la stringa di codice corretta, nel caso in cui qualcun altro trovi questa discussione.

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

La ripartizione è stata da http://www.postgresql.org/docs/7.3/static/app-pgrestore.html e un po 'di tentativi ed errori.

Essenzialmente...

-c to clean the database
-i to ignore any database version checks
-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)

Spero che quanto sopra aiuti qualcun altro.


come fare con tar.gz?
eri,

2

Quando ho usato PgAdmin III per eseguire il ripristino per me, ha funzionato perfettamente usando il seguente comando che ha costruito da solo:

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"

Nota per evitare avvisi è una buona idea avere il ruolo del proprietario degli oggetti nel file di backup già esistente nel server di destinazione. Inoltre, dovresti già avere il DB di destinazione creato e di proprietà di quel ruolo.


1

Non sono sicuro che possa importare un file .tar. Vorrei fare un

tar -zxvf client03.tar 

per estrarre qualsiasi cosa contenesse il file e riprovare pg_restore. So che pg_restore funziona, dato che abbiamo lo stesso metodo di ripristino dai ripristini bare metal.


1
Ciao Stephen, sì, a quanto pare può, mi ci è voluto solo un po 'per ottenere il codice corretto e per rilasciare il file in una cartella con il permesso di accedere :)
Stephen,

"-Z" restituirebbe un errore, in quanto è solo un tar, non compresso con gzip.
Alex,

Alex ha ragione al 100%.
Stephen Thompson,

0

Di seguito è stato generato per me da pgAdmin iii facendo clic sul database e facendo clic con il tasto destro e selezionando Ripristina. Ho navigato nel file .tar che avevo e lo ha fatto da solo.

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

0

Per la versione 9.5, eseguire quanto segue nella riga di comando

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


0

CONSOLLE GNU / LINUX:

pg_restore -h 127.0.0.1 -p 5432 -U "postgres" -d "dvdrental_tpl" -v "/var/backups/dvdrental.tar";

- Guida dettagliata

pg_restore: aiuto

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.