it-swarm.com.de

wie man den Fortschritt eines großen Postgresql-Dumps verfolgt

Gibt es eine Möglichkeit, den Fortschritt einer pg_dump - Operation auf einer großen Datenbank (dh> 1 GB) zu sehen? Durch Hinzufügen der Option -v wird nur Text auf dem Bildschirm ausgegeben, aber ich bekomme nicht viele aussagekräftige Tracking-Informationen.

14
abbood

Sie können einen groben Fortschritt anhand der Inhaltsverzeichnisliste sehen.

Rufen Sie zunächst die Inhaltsverzeichnisliste der wiederherzustellenden Objekte ab:

pg_restore -l -f list.toc db.dump

Anschließend können Sie die Inhaltsverzeichnisliste Zeile für Zeile anzeigen und die Ausgabe der ausführlichen oder Abfrage pg_stat_activity vergleichen, um festzustellen, wo sich in der Inhaltsverzeichnisliste pg_restore befindet.

Es ist jedoch nur eine grobe Schätzung. Erstens, weil das Laden jedes Elements aus der Inhaltsverzeichnisliste sehr unterschiedlich lange dauern kann (z. B. sind Schemas schnell, das Laden von Daten großer Tabellen und das Erstellen von Indizes jedoch nicht). Wenn Sie -j verwenden, wird ein Element wiederhergestellt bevor ein vorheriger fertig ist. Ich bin mir auch nicht 100% sicher, ob pg_restore genau der TOC-Liste folgt, wenn Sie -L nicht verwenden, aber ich denke, dass dies der Fall ist.

9
MatheusOl

Gültig für Unix/Linux-Umgebungen:

Mit dem Dienstprogramm Pipe Viewer (pv) kann der Sicherungsfortschritt verfolgt werden. Der pv animiert Ihre Shell mit Details zur verstrichenen Zeit und den übertragenen Bytes.

Im Folgenden finden Sie ein Beispiel für das Dumping mit den Dienstprogrammen pv und split, um die großen Dump-Dateien in kleinen Blöcken zu speichern. Es kann nützlich sein, es später an einen anderen Ort zu übertragen.

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

Der Nachteil - dieser Ansatz funktioniert nicht, wenn die Option pg_dump -Fd (Dump to Ordner) verwendet wird.

2
R0B0T-B0BA