come tenere traccia dell'avanzamento di un grande deposito postrgresql


13

C'è un modo per vedere l'avanzamento di pg_dumpun'operazione su un grande db (cioè> 1 GB)? l'aggiunta -vdell'opzione scarica semplicemente il testo sullo schermo, ma non mi dà molte informazioni di tracciamento significative.

Risposte:


7

Puoi vedere un progresso approssimativo usando l'elenco TOC.

Innanzitutto, ottieni l'elenco di oggetti TOC da ripristinare:

pg_restore -l -f list.toc db.dump

Quindi, è possibile visualizzare l'elenco TOC riga per riga e confrontare l'output di verbose o query pg_stat_activity per vedere dove si trova nell'elenco TOC pg_restore.

È solo una stima approssimativa però. Innanzitutto perché ogni elemento dall'elenco TOC potrebbe richiedere tempi molto diversi per il caricamento (ad esempio, gli schemi sono veloci, ma il caricamento dei dati di tabelle di grandi dimensioni e gli indici di costruzione non lo sono) e se si utilizza -j, verrà ripristinato un elemento prima che uno precedente sia finito. Inoltre, non sono sicuro al 100% se pg_restore segue esattamente l'elenco TOC se non usi -L, ma penso che lo faccia.


1
Sono confuso da questa risposta - la domanda originale specifica il dumping di un database, ma questa soluzione specifica il ripristino del database
jaydel,

2

Valido per ambienti Unix / Linux:

L'utilità Pipe Viewer (pv) può essere utilizzata per tracciare l'avanzamento del backup. Il pv anima la tua shell con dettagli sul tempo trascorso e sui byte trasferiti.

Di seguito è riportato l'esempio del dumping utilizzando i programmi di utilità pv e split per mantenere i file di dump grandi in piccoli blocchi. Potrebbe essere utile trasferirlo successivamente in un'altra posizione.

# dump the PREDATA in clear text into a .PREDATA.SQL text file
pg_dump -s -o --section=pre-data  -n $schemaname $DatabaseConnString | pv | split -d -b $chunksize - $backuppath/$backupfilename".PREDATA.sql"

# dump the POSTDATA in clear text into a .PREDATA.SQL text file
pg_dump -s -o --section=post-data -n $schemaname $DatabaseConnString | pv | split -d -b $chunksize - $backuppath/$backupfilename".POSTDATA.sql"

# dump the DATA into the .DATA.dump compressed (binary) file
pg_dump -Fc   --section=data      -n $schemaname $DatabaseConnString | pv | split -d -b $chunksize - $backuppath/$backupfilename".DATA.dump"

Lo svantaggio: questo approccio non funziona se viene utilizzata l'opzione pg_dump -Fd (dump to folder).

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.