como acompanhar o progresso de um grande despejo postrgresql

13

Existe uma maneira de ver o progresso de uma pg_dumpoperação em um grande banco de dados (ou seja,> 1 GB)? adicionar a -vopção apenas despeja o texto na tela, mas não me fornece muitas informações de rastreamento significativas.

abbood
fonte

Respostas:

7

Você pode ver um progresso aproximado usando a lista de sumário.

Primeiro, obtenha a lista de sumário de objetos a serem restaurados:

pg_restore -l -f list.toc db.dump

Em seguida, você pode ver a lista de sumário, linha por linha, e comparar a saída detalhada ou consultar pg_stat_activity para ver onde está o pg_restore na lista de sumário.

É apenas uma estimativa aproximada. Primeiro, porque cada item da lista de sumário pode levar um tempo muito diferente para carregar (por exemplo, os esquemas são rápidos, mas carregar dados de grandes tabelas e criar índices não) e, se você usar -j, um item será restaurado antes que um anterior termine. Além disso, não tenho 100% de certeza se o pg_restore segue a lista de sumário exatamente se você não usa -L, mas acho que sim.

MatheusOl
fonte
Estou confuso com esta resposta - a questão especifica originais despejar um banco de dados, mas esta solução especifica restaurar o banco de dados
jaydel
2

Válido para ambientes Unix / Linux:

O utilitário Pipe Viewer (pv) pode ser usado para rastrear o progresso do backup. O PV anima seu shell com detalhes sobre o tempo decorrido e os bytes transferidos.

Abaixo está o exemplo de dumping usando os utilitários pv e split para manter os grandes arquivos de despejo em pequenos pedaços. Pode ser útil transferi-lo posteriormente para outro local.

# 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"

A desvantagem - essa abordagem não funciona, se a opção pg_dump -Fd (despejar na pasta) for usada.

R0B0T-B0BA
fonte