jak śledzić postęp dużego zrzutu postrgresql

13

Czy istnieje sposób, aby zobaczyć postęp pg_dumpoperacji na dużej bazie danych (tj.> 1 GB)? dodanie tej -vopcji po prostu zrzuca tekst na ekran, ale nie daje mi znaczących informacji o śledzeniu.

abbood
źródło

Odpowiedzi:

7

Możesz zobaczyć przybliżony postęp, korzystając z listy spisu treści.

Najpierw pobierz listę spisu obiektów do przywrócenia:

pg_restore -l -f list.toc db.dump

Następnie możesz wyświetlić listę spisu treści wiersz po wierszu i porównać dane wyjściowe pełnej odpowiedzi lub zapytania pg_stat_activity, aby zobaczyć, gdzie na liście spisu treści znajduje się pg_restore.

To tylko przybliżony szacunek. Po pierwsze, ponieważ ładowanie każdego elementu z listy spisu treści może zająć naprawdę inny czas (na przykład schematy są szybkie, ale ładowanie danych z dużych tabel i indeksów budynków nie jest), a jeśli użyjesz opcji -j, przywracany będzie element przed zakończeniem poprzedniego. Nie jestem też w 100% pewien, czy pg_restore podąża za listą TOC, jeśli nie używasz -L, ale myślę, że tak.

MatheusOl
źródło
2
Jestem zaskoczony tą odpowiedzią - pierwotne pytanie określa zrzut bazy danych, ale to rozwiązanie określa przywracanie bazy danych
jaydel
2

Dotyczy środowisk Unix / Linux:

Za pomocą narzędzia Pipe Viewer (pv) można śledzić postęp tworzenia kopii zapasowej. PV animuje twoją powłokę ze szczegółami na temat upływającego czasu i przesłanych bajtów.

Poniżej znajduje się przykład zrzutu za pomocą programów pv i split do przechowywania dużych zrzutów plików w małych porcjach. Przydatne może być przeniesienie go później w inne miejsce.

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

Wada - to podejście nie działa, jeśli używana jest opcja pg_dump -Fd (zrzut do folderu).

R0B0T-B0BA
źródło