回答:
TOCリストを使用して、大まかな進捗を確認できます。
最初に、復元するオブジェクトのTOCリストを取得します。
pg_restore -l -f list.toc db.dump
次に、TOCリストを1行ずつ表示し、verboseまたはquery pg_stat_activityの出力を比較して、TOCリストのどこにpg_restoreがあるかを確認できます。
ただし、概算です。最初に、TOCリストの各アイテムのロードに実際に異なる時間がかかる場合があるため(たとえば、スキーマは高速ですが、大きなテーブルのデータのロードとインデックスの構築はそうではありません)、-jを使用すると、アイテムが復元されます前のものが終了する前に。また、-Lを使用しない場合、pg_restoreがTOCリストに正確に従うかどうかは100%わかりませんが、そうだと思います。
Unix / Linux環境に有効:
Pipe Viewer(pv)ユーティリティを使用して、バックアップの進行状況を追跡できます。pvは、経過時間と転送バイトに関する詳細を使用してシェルをアニメーション化します。
以下は、pvおよびsplitユーティリティを使用して、大きなダンプファイルを小さなチャンクに保持するダンプの例です。後で別の場所に転送すると便利な場合があります。
# 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"
欠点-pg_dump -Fdオプション(フォルダーにダンプ)を使用すると、このアプローチは機能しません。