PG_DUMPALL(1)

NAME
pg_dumpall - PostgreSQL データベースクラスタをスクリプトファイルへ抽出

SYNOPSIS

pg_dumpall [ option... ]

説明

pg_dumpall はクラスタの全ての PostgreSQL データベースを、1 つのスクリプトファイルに書き出す (``ダンプする'') ためのユーティリティです。 スクリプトファイルには、データベースをリストアするための psql(1) への入力として使うことのできる SQL コマンドが含まれています。 これはクラスタ内の各データベースに対して pg_dump(1) を呼び出すことによって行なわれます。 pg_dumpall は更に、全てのデータベースに共通するグローバルオブジェクトもダンプします。 (pg_dump はこれらのオブジェクトを保存しません。) 現時点では、これにはデータベースユーザとグループ、データベース全体に適用するアクセス制限に関する情報が含まれています。

したがって、pg_dumpall はデータベースのバックアップをとるための統合的な解決策です。 しかし、次の制限には注意して下さい。 pg_dump が ``ラージオブジェクト'' をテキストファイルにダンプできないため、pg_dumpall も同様にダンプできません。 ラージオブジェクトを含むデータベースがある場合、pg_dump の非テキスト出力モードの 1 つを使用してダンプしなければなりません。

pg_dumpall は全てのデータベースからテーブルを読みこむため、完全なダンプを作成するためにはデータベーススーパーユーザとして接続しなければならないでしょう。さらに、ユーザとグループを追加するため、そしてデータベースを作成するために、保存されたスクリプトを実行するにはスーパーユーザ権限が必要になるでしょう。

SQL スクリプトは標準出力に書き込まれます。それをファイルにリダイレクトするためには、シェルの演算子を使います。

pg_dumpall は、 PostgreSQL サーバに何度も接続しなければなりません。その度にパスワードが必要になる場合があります。 そのような場合には $HOME/.pgpass ファイルを用意しておくと便利です。

オプション

以下のコマンドラインオプションを使用して、内容や出力形式を制御することができます。

-a

--data-only
    データのみをダンプし、スキーマ(データ定義)をダンプしません。

-c

--clean
    再作成を行なう前にデータベースを掃除 (削除) するための SQL コマンドを含めます。

-d

--inserts
    データを (COPY ではなく) INSERT コマンドとしてダンプします。 これを行うとリストアが非常に遅くなりますが、出力の他の SQL データベース管理システムへの移植性は高くなります。

-D

--column-inserts

--attribute-inserts
    データを明示的に列名を付けた INSERT コマンド (INSERT INTO table (column, ...) VALUES...) としてダンプします。 これによりリストアは非常に遅くなります。 しかし、列の順番を変更する場合にはこれが必要です。

-g

--globals-only
    グローバルオブジェクト (ユーザとグループ) のみをダンプし、データベースのダンプを行ないません。

-i

--ignore-version
    pg_dumpall とデータベースサーバのバージョンの不一致を無視します。 pg_dumpall は、前のリリースのPostgreSQL データベースを扱うことができますが、非常に古いバージョン(現時点では7.0より前のバージョン)はサポートしていません。 バージョンチェックを無効にする必要がある場合には、このオプションを使います (もし pg_dumpall が失敗したとしても、警告されなかったとは言えませんよ)。

-o

--oids
    各テーブルのオブジェクト識別子 (OID) をダンプします。アプリケーションで OID 列を (外部キー制約など) 何らかの形で使用している場合は、このオプションを使用して下さい。その他の場合は、このオプションは使用しないで下さい。

-s

--schema-only
    スキーマ(データ定義)のみをダンプし、データをダンプしません。

-v

--verbose
    冗長モードを指定します。 これを指定すると、pg_dumpall は進行メッセージを標準エラーに出力するようになります。

-x

--no-privileges

--no-acl
    アクセス権限のダンプ(grant/revokeコマンド)を行いません。

以下のコマンドラインオプションは、データベース接続パラメータを制御します。

-h host
    データベースサーバが稼働しているマシンのホスト名を指定します。 この値がスラッシュから始まる場合、Unix ドメインソケット用のディレクトリとして使用されます。 設定されている場合、デフォルトは環境変数 PGHOST から取得されますが、そうでない場合は Unix ドメインソケット接続を試みます。

-p port
    サーバが接続を監視している TCP ポートもしくはローカル Unix ドメインソケットファイルの拡張子を指定します。 デフォルトは、設定されている場合は環境変数 PGPORT、またはコンパイルの際のデフォルトになります。

-U username
    指定したユーザとして接続します。

-W  強制的にパスワードのプロンプトを表示します。これは、パスワード認証が必要なサーバの場合、自動的に行なわれます。

環境

PGHOST

PGPORT

PGUSER
    デフォルトの接続パラメータです。

注釈

pg_dumpall は、内部で pg_dump を呼び出すので、診断メッセージの一部は pg_dump を参照します。

オプティマイザが有用な統計情報を持つように、リストアした後にリストアしたテーブルそれぞれに対して ANALYZE を実行することを勧めます。 また、vacuumdb -a -z を実行することで全てのデータベースを解析することができます。

例

全てのデータベースを書き出す場合、以下のようにします。

$ pg_dumpall > db.out

上記で書き出したデータベースを読み込む場合、以下のようにします。

$ psql -f db.out template1

(ここではどのデータベースに接続するかということは重要ではありません。なぜなら pg_dumpall が作成するスクリプトファイルは、保存されたデータベースの作成および接続のためのコマンドを含んでいるからです。)

関連項目

pg_dump(1)。起こり得るエラー条件についての詳細はこちらを参照して下さい。