7

このコマンドで取得した pg_dump を別のサーバーから復元しようとしています。

sudo -u postgres pg_dump --verbose --format=custom --file=pg-backup.sql -U postgres salesDB

pg-backup.sql ファイルをコピーした後、このコマンドで復元しようとしています

sudo -u postgres pg_restore --verbose --jobs=`nproc` -f pg-backup.sql

pg-backup.sql ファイルは 13 GB です。pg-restore は 4 時間実行されており、ずっとデータを画面上にスクロールしています。エラーなし。

しかし、psql セッションからこのステートメントを実行すると

SELECT pg_size_pretty(pg_database_size('salesDB'));

サイズは 5377 kB です。何?これで少なくとも 1GB になるはずです。私は完全に迷っています。このデータはすべて画面を上にスクロールしていて、それがどこにも行かないことを証明することはできません. ディスク使用なし。

ヘルプ

4

3 に答える 3

5

解決済み - 構文エラー-f(出力ファイル) パラメーターは、私が知る限り役に立ちません。pg_restoreコマンドラインの最後の要素としてのみ、フラグなしで使用するファイルを指定する必要がありました。-d salesdbパラメータが必要でした。私は16個のCPUを持っているので-j 15、設定しました。これは非常に役に立ちました。私の最後のコマンドラインは

sudo -u postgres pg_restore -d salesdb --jobs=15 backup10.sql

次に、関数を使用して非常に高速にサイズをインクリメントしpg_database_sizeます。

あるべき姿で成長しています。

于 2013-07-11T19:48:40.230 に答える
2

pg_restoreダンプの内容をデータベースに復元するのではなく、ディスプレイに出力するように指示しているように見えます。を指定しました--dbnameか?

個人的にはpg_restore、 のコマンド ライン構文は特に直感的ではないと思います。時間があれば、Pg で改善を試みたいものの 1 つです。

于 2013-07-11T01:39:14.503 に答える