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

13

Existe-t-il un moyen de voir la progression d'une pg_dumpopération sur une grosse base de données (c'est-à-dire> 1 Go)? l'ajout de l' -voption ne fait que vider le texte à l'écran, mais ne me donne pas beaucoup d'informations de suivi significatives.

abbood
la source

Réponses:

7

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'un précédent. 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.

MatheusOl
la source
1
Je suis confus par cette réponse - la question d'origine spécifie le vidage d'une base de données, mais cette solution spécifie la restauration de la base de données
jaydel
2

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.

R0B0T-B0BA
la source