2011-07-25 1 views
2

私はpostgres 8でバックアップをとると、スキーマとデータだけをバックアップしますが、インデックスはバックアップしません。これどうやってするの?インデックスを含め、Postgres 8のすべてをどのようにバックアップできますか?

+2

あなたは現在バックアップを作成していますか、まさにどのバージョンのPostgresを使用していますか?一般的に、pg_dumpはインデックスをバックアップする必要があります。 –

+0

私はバックアップのGUI管理者を使用しています。データベースを右クリックして "backup"を選択してください。 – Zubair

+0

@Mikeが書き出したインデックスはpg_dumpのバックアップに含まれています。可能であれば、PostgreSQLのマイナーバージョン、pgAdminバージョン、バックアップフォーマット:COMPRESS、TAR、PLAIN)と再現可能なDDLが必要です。 –

答えて

3

pg_dumpユーティリティを使用してバックアップを作成しているようです。これにより、データベースをゼロから再作成するために必要な情報が節約されます。索引に情報をダンプする必要はありません。スキーマがあり、スキーマには索引定義が含まれています。このバックアップをロードすると、最初に作成されたのと同じ方法でインデックスからデータが再構築されます。つまり、新しい行が追加されると構築されます。

インデックスを含むデータベースブロックの物理的なバックアップを行う場合は、代わりにPITR backupを実行する必要があります。これははるかに複雑な手順ですが、結果として得られるバックアップは即座に使用可能になります。 pg_dump形式のバックアップは、復元にかなりの時間がかかります。

+0

です。リストアを高速化するためには、索引をダンプに含めると(定義だけでなく)索引を含めると便利です。膨大なインデックスを持つデータウェアハウスアプリケーションを使用している場合、すべてのインデックスを再生成する必要があるため、リストアにはさらに長い時間がかかります。 – Cerin

1

私が正しく理解していれば、インデックスのダンプと元のテーブルデータが必要です。

pg_dumpは、ダンプの最後にCREATE INDEX文を出力します。これにより、新しいデータベースのインデックスが再作成されます。

Greg Smithの提案に従ってPITRバックアップを実行するか、データベースを停止してバイナリをコピーするだけです。

+0

右私は、あなたがサーバーを落とすことができれば、データベースが入っているディレクトリツリー全体をコピーするだけで、データベースを完全にバックアップすることができることを忘れていました。シンボリックリンクに注意する必要があります。あなた自身のテーブルスペース - そして他のいくつかのケースでは、私はすべての詳細に入ることはありません。 –

関連する問題