Caution |
全てのデータベースは定期的にバックアップされるべきです。 Postgres はファイルシステムの中で それ自身のファイルを管理しますが、データベースのバックアップ の目的に対し、ファイルシステムによるバックアップに依存すること は推奨出来ません。ファイルが使用可能か、 復旧後でも以前との整合性が保たれているかについて、 保証の限りではありません。 |
Postgres は個別のデータベースを バックアップする pg_dump と、 全てのインストレーションを一括してバックアップする pg_dumpall の二つのユーティリティを 提供しています。
個別のデータベースをバックアップするためには次の命令を使います:
% pg_dump dbname > dbname.pgdump復旧には:
cat dbname.pgdump | psql dbnameを使います。
この手法はデータベースを新たな場所に移動し、元のデータベースの 名前を変える時にも利用できます。
著者: 1999-06-19 に Hannu Krosing により書かれました。
Postgres はシステムが許容する最大の ファイル容量より大きいテーブルを扱えますので、テーブルをファイルに 落す場合に、システム許容の最大容量より大きくなってしまう問題を 起こす可能性があります。
pg_dump は stdout に書き出すため、 この関連の問題に対処するために一般的な *nix ツールを使用すれば良いでしょう。
圧縮ダンプを使う:
% pg_dump dbname | gzip > filename.dump.gz再ロードには、
% createdb dbname % gunzip -c filename.dump.gz | psql dbname又は、
% cat filename.dump.gz | gunzip | psql dbnameを使う。
split を使う:
% pg_dump dbname | split -b 1m - filename.dump.再ロードは以下のようにする:
% createdb dbname % cat filename.dump.* | pgsql dbname
言うまでもなくファイル名 (filename)と 出力 pg_dump の内容がデータベース名と 一致しなくても構いません。同時に、この手法はデータベース名を変更 する場合にも用いられるため、復旧されたデータベースに任意の名前を つけることが出来ます。