web-dev-qa-db-fra.com

comment suivre les progrès d'une grande décharge postgresql

Existe-t-il un moyen de voir la progression d'un pg_dump opération sur une grosse base de données (ie> 1 Go)? ajouter le -v L'option vide simplement le texte à l'écran, mais ne me donne pas beaucoup d'informations de suivi significatives.

14
abbood

Vous pouvez voir une progression approximative à l'aide de la liste TOC.

Tout d'abord, récupérez la liste des objets à restaurer:

pg_restore -l -f list.toc db.dump

Ensuite, vous pouvez voir la liste de la table des matières ligne par ligne et comparer la sortie de verbeux ou de la requête pg_stat_activity pour voir où se trouve pg_restore dans la liste de la table des matières.

Ce n'est qu'une estimation approximative. D'abord parce que chaque élément de la liste de la table des matières peut prendre un temps vraiment différent à charger (par exemple, les schémas sont rapides, mais le chargement des données des grandes tables et des index de construction ne le sont pas), et si vous utilisez -j vous aurez un élément en cours de restauration avant la fin d'une précédente. De plus, je ne suis pas sûr à 100% si pg_restore suit la liste des tables des matières précisément si vous n'utilisez pas -L, mais je pense que oui.

9
MatheusOl

Valable pour les environnements Unix/Linux:

L'utilitaire Pipe Viewer (pv) peut être utilisé pour suivre la progression de la sauvegarde. Le pv anime votre Shell avec des détails sur le temps écoulé et les octets transférés.

Ci-dessous, l'exemple de vidage à l'aide des utilitaires pv et split pour conserver les gros fichiers de vidage en petits morceaux. Il peut être utile de le transférer ultérieurement vers un autre emplacement.

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

L'inconvénient - cette approche ne fonctionne pas, si l'option pg_dump -Fd (dump to folder) est utilisée.

2
R0B0T-B0BA