5

このコマンドを使用して、200 GB のデータベースをバックアップしました (postgres 9.1、win7 x64):

pg_dump -Z 1 データベース名 > バックアップ

16GB のファイルが作成されましたが、以前のバックアップ (および外部ツールによって圧縮された) が同様のサイズであったため、問題ないと思います。を使用して PG9.2 に復元しようとするとpg_restore、次のエラーが表示されます。

入力ファイルは有効なアーカイブではないようです

pg_restore -Ft:

[tar アーカイバ] ▼ で見つかった破損した tar ヘッダー (13500752、com と予想される)
puted 78268) ファイル位置 512

Gzip も破損していることを示しています。Total Commander でバックアップ ファイルを開くと、内部ファイルは 1.8GB しかありません。解決策を探していたところ、-Cfおそらくパラメーターでダンプを行う必要があります。

現在、どの形式のファイルがありますか? tarまたはgzipのみですか(winrarはgzipを表示します)?これを適切に復元する方法はありますか、それとも何らかの形で破損していますか (ダンプ時にエラーは発生しません)。tar や gzip のファイル サイズ制限によるものでしょうか?

4

5 に答える 5

6

「バックアップ」の出力として得られるのは、圧縮された単純な sql です。次のプロンプトを表示して確認できます。

gzip -l backup

残念ながら、 pg_retore はPLAIN SQLを復元する可能性を提供しないため、ファイルを解凍してpsql -f <FILE>コマンドを使用するだけです:

zcat backup > backup.sql
psql -f backup.sql

pg_dump -Fc「Frank Heikens」が提案したように、postgres 9.1 からダンプを作成することはできません。これは、ダンプ形式が 9.0 -> 9.1 -> 9.2 のようにプライマリ バージョン間で互換性がなく、「pg_restore」で 9.2 でエラーが発生するためです。

于 2012-10-07T19:57:27.867 に答える
0

ダンプはプレーン SQL であり、pg_restore で使用しようとしているような tar 形式ではありません。圧縮形式が必要な場合は --format=custom または -Fc を使用し、pg_restore でもこの設定を使用します。マニュアルを確認してください。

于 2012-10-07T11:31:12.410 に答える
0

これは古いスレッドですが、まったく同じ問題があり、fixgz で多少破損したダンプを修正できました。

簡単な答え:圧縮されたダンプに対して fixgz http://www.gzip.org/fixgz.zipを実行します。

fixgz.exe bad.gz fixed.gz

長い答え: したがって、カスタム形式オプション (-Fc) を指定せずに --compresss または -Z で pg_dump を使用した場合、実際に得られるのは BINARY モードではなく ASCII モードの圧縮ファイルです。

http://www.gzip.org/#faq1からの引用

ファイルを ASCII モードで転送し、元のファイルにアクセスできなくなった場合は、プログラム fixgz を試して、転送によって挿入された余分な CR (キャリッジ リターン) バイトを削除することができます。Windows 9x/NT/2000/ME/XP のバイナリはこちらです。ただし、これで実際にファイルが修正されるという保証はまったくありません。結論: バイナリ ファイルを ASCII モードで転送しないでください。

于 2016-05-09T10:40:09.730 に答える