2013-07-11 28 views
6

Sto tentando di ripristinare un pg_dump acquisito con questo comando da un altro server.PostgreSQL 9.0.13 eseguendo un pg_restore ma nessuna prova dello spazio su disco utilizzato

sudo -u postgres pg_dump --verbose --format=custom --file=pg-backup.sql -U postgres salesDB 

Dopo aver copiato il file pg-backup.sql sto cercando di ripristinare con questo comando

sudo -u postgres pg_restore --verbose --jobs=`nproc` -f pg-backup.sql 

Il file pg-backup.sql è 13GB. Il pg-restore è in esecuzione da 4 ore, scorrendo i dati sullo schermo per tutto il tempo. Nessun errore

Ma quando eseguo questa dichiarazione da una sessione di psql

SELECT pg_size_pretty(pg_database_size('salesDB')); 

ottengo 5377 KB. CHE COSA? Dovrebbe essere almeno 1 GB ormai. Sono completamente perso. Tutti questi dati stanno scorrendo il mio schermo e non riesco a dimostrare che sta andando da nessuna parte. Nessun utilizzo del disco.

Aiuto

+0

Su una nota a margine, congratulazioni per tenere il passo con il rilascio di patch corrente. Vedo troppi 9.0.4 qui intorno. –

risposta

5

provare senza il flag "-f" nel comando pg_restore. Inoltre, potresti provare a creare il database salesdb vuoto e passare "-d salesdb". Si noti che il nome db verrà ripiegato in minuscolo a meno che non sia stato creato tra virgolette.

Aggiunto esempio passaggi per dimostrare che il db cresce in dimensioni come il ripristino è in esecuzione

-- sample pg_dump command 
pg_dump -f testdb.out -Fc src_test_db 

-- create the db to restore into 
createdb sometestdb 

-- restore with 4 parallel jobs, from the "testdb.out" file, into the db "sometestdb" 
time pg_restore --dbname=sometestdb --jobs=4 testdb.out 

-- In another window, every few seconds, you can see the db growing 
psql -d postgres -c "select pg_size_pretty(pg_database_size('sometestdb'))" 
pg_size_pretty 
---------------- 
4920 MB 

psql -d postgres -c "select pg_size_pretty(pg_database_size('sometestdb'))" 
pg_size_pretty 
---------------- 
4920 MB 

psql -d postgres -c "select pg_size_pretty(pg_database_size('sometestdb'))" 
pg_size_pretty 
---------------- 
5028 MB 

psql -d postgres -c "select pg_size_pretty(pg_database_size('sometestdb'))" 
pg_size_pretty 
---------------- 
5371 MB 
+0

Cosa stai dicendo che dovrei vedere la dimensione del db crescere ogni volta che eseguo la funzione pg_database_size durante il ripristino? e finché non vedo che non ho corretto? –

+0

Sì, o anche controllare 'df'. – bma

+0

@WadeJernigan, ho modificato la mia risposta per mostrare che il db cresce durante il pg_restore. – bma

2

mi sembra che hai dicendo pg_restore per stampare il contenuto della discarica al display, non restituirlo alla il database. Hai specificato un --dbname?

Personalmente ritengo che la sintassi della riga di comando di pg_restore non sia particolarmente intuitiva e, se mai avrò tempo, è una delle cose che vorrei provare a migliorare in Pg.

+0

non è possibile utilizzare --dbname se si specifica un -f (nome file) ma sì, sembra che stavo scrivendo solo sullo schermo. Quindi ho rimosso l'opzione --verbose. Ora non ho nulla sullo schermo nelle ultime 14 ore e nessuna prova che il database stia crescendo. grrr Ho bisogno di un modo per dimostrare che i dati stanno entrando nel database. Proverò alcune dichiarazioni selezionate. Vorrei che segnalasse una dimensione crescente. –

4

RISOLTO - errore di sintassi (file di output ) -f parametro è inutile, per quanto posso dire. Dovevo specificare il file per pg_restore da consumare senza alcun contrassegno, solo come ultimo elemento nella riga di comando. Il parametro -d salesdb era necessario. Ho 16 cpus quindi ho impostato -j 15, che mi è sembrato molto utile. la mia linea di comando finale è stato

sudo -u postgres pg_restore -d salesdb --jobs=15 backup10.sql 

tanto sono incrementi molto veloci dimensioni con la funzione pg_database_size.

Sta crescendo come dovrebbe.

+0

Non ho familiarità con come funziona questo forum, ma puntiamo a bma. Aveva ragione, grazie. –

+2

Penso che tu "accetti" semplicemente la risposta che hai scelto come corretta. – bma