pg_dumpall はクラスタの全ての PostgreSQL データベースを一つのスクリプトファイルに書き出す("ダンプする")ための機能です。スクリプトファイルにはデータベースをリストアするための psql への入力値として使うことができる SQL コマンドが含まれています。これはクラスタ内の各データベースに対して pg_dump を呼び出すことによって行なわれます。 pg_dumpall は更に、全てのデータベースに共通するグローバルオブジェクトもダンプします。(pg_dump はこれらのオブジェクトを保存しません。)これは、現時点ではデータベースユーザとグループに関する情報を含んでいます。
したがって、pg_dumpall はデータベースのバックアップをとるための統合的な解決法です。しかし、次の制限には注意して下さい。 pg_dump は "large objects" をダンプできません。このオブジェクトをテキストファイルにダンプすることができないからです。ラージオブジェクトを含むデータベースがある場合、pg_dump の非テキスト出力モードの1つを使用してダンプしなければなりません。
pg_dumpall は全てのデータベースからテーブルを読みこむため、完全なダンプを作成するためにはデータベーススーパーユーザとして接続しなければならないでしょう。さらに、ユーザとグループを追加することを許可されるために保存されたスクリプトを実行するため、そしてデータベースを作成するためにはスーパーユーザ権限が必要になるでしょう。
SQL スクリプトは標準出力に書かれます。それをファイルにリダイレクトするためには shell 演算子を使います。
pg_dumpall は以下のコマンドライン引数を受け付けます。
再作成を行なう前にデータベースオブジェクトを掃除(削除)するSQL コマンドを含めます。(このオプションははっきりいって役に立ちません。出力されるスクリプトはそのデータベース自体を作成することを想定しているためです。作成する時に常に空になります。)
グローバルオブジェクト(ユーザとグループ)のみをダンプし、データベースのダンプを行ないません。
データベースサーバが稼働しているマシンのホスト名を指定します。もしホスト名がスラッシュ(/)ではじまる場合は、Unix ドメインソケット用のディレクトリとして使われます。設定されている場合、デフォルトは環境変数 PGHOST からとられますが、そうでない場合は Unix ドメインソケット接続を試みます。
サーバが監視しているポート番号です。デフォルトは、設定されている場合は環境変数 PGPORT、またはコンパイルされているデフォルトになります。
指定したユーザとして接続します。
強制的にパスワードの入力を促します。パスワード認証が必要なサーバの場合は自動的に行なわれます。
その他すべてのコマンドラインパラメータは基になる pg_dump の呼び出しに渡されます。これは出力フォーマットのいくつかの側面を管理するために便利ですが、-f、 -t、そして dbname のようないくつかのオプションは避けるべきです。