3.6. SQL ダンプを使用した PostgreSQL データのバックアップ


SQL ダンプのメソッドは、SQL コマンドを使用したダンプファイルの生成に基づいています。ダンプがデータベースサーバーにアップロードされると、ダンプ時と同じ状態でデータベースが再作成されます。

SQL ダンプは、以下の PostgreSQL クライアントアプリケーションによって保証されます。

  • pg_dump は、ロールまたはテーブルスペースに関するクラスター全体の情報なしに単一のデータベースをダンプします。
  • pg_dumpall は、指定されたクラスター内の各データベースをダンプし、ロールやテーブルスペースの定義など、クラスター全体のデータを保持します。

デフォルトでは、pg_dump コマンドおよび pg_dumpall コマンドは、結果を標準出力に書き込みます。ダンプをファイルに保存するには、出力を SQL ファイルにリダイレクトします。作成される SQL ファイルは、テキスト形式またはその他の形式のいずれかになります。これにより並列処理が可能になり、オブジェクトの復元をより詳細に制御できます。

データベースにアクセスできる任意のリモートホストから、SQL ダンプを実行できます。

3.6.1. SQL ダンプの長所と短所

SQL ダンプには、他の PostgreSQL バックアップ方法と比較して、以下の長所があります。

  • SQL ダンプは、サーバーのバージョン固有ではない唯一の PostgreSQL バックアップメソッドです。pg_dump ユーティリティーの出力は、PostgreSQL の後続のバージョンにリロードできます。これは、ファイルシステムレベルのバックアップ、または継続的なアーカイブにはできません。
  • SQL ダンプは、32 ビットサーバーから 64 ビットサーバーへなど、異なるアーキテクチャーにデータベースを転送する際に有効な唯一の方法です。
  • SQL ダンプは、内部的に一貫性のあるダンプを提供します。ダンプは、pg_dump の実行開始時のデータベースのスナップショットを表します。
  • pg_dump ユーティリティーは、実行中のデータベースの他の操作をブロックしません。

SQL ダンプの短所は、ファイルシステムレベルのバックアップと比較して時間がかかることです。

3.6.2. pg_dump を使用して SQL ダンプを実行する

クラスター全体の情報なしに単一のデータベースをダンプするには、pg_dump ユーティリティーを使用します。

前提条件

  • ダンプするすべてのテーブルへの読み取りアクセスが必要です。データベース全体をダンプするには、postgres のスーパーユーザーまたはデータベースの管理者特権を持つユーザーとして、コマンドを実行する必要があります。

手順

  • クラスター全体の情報なしでデータベースをダンプします。

    $ pg_dump <db_name> > <dump_file>
    Copy to Clipboard Toggle word wrap

    pg_dump が接続するデータベースサーバーを指定するには、以下のコマンドラインオプションを使用します。

    • ホストを定義する -h オプション

      デフォルトのホストは、ローカルホストか、PGHOST 環境変数で指定されているものです。

    • ポートを定義する -p オプション

      デフォルトのポートは、PGPORT 環境変数またはコンパイル済みデフォルトで示されます。

3.6.3. pg_dumpall を使用して SQL ダンプを実行する

特定のデータベースクラスター内の各データベースをダンプし、クラスター全体のデータを保持するには、pg_dumpall ユーティリティーを使用します。

前提条件

  • postgres スーパーユーザーまたはデータベースの管理者特権を持つユーザーとして、コマンドを実行する必要があります。

手順

  • データベースクラスターのすべてのデータベースをダンプし、クラスター全体のデータを保存します。

    $ pg_dumpall > <dump_file>
    Copy to Clipboard Toggle word wrap

    pg_dumpall が接続するデータベースサーバーを指定するには、以下のコマンドラインオプションを使用します。

    • ホストを定義する -h オプション

      デフォルトのホストは、ローカルホストか、PGHOST 環境変数で指定されているものです。

    • ポートを定義する -p オプション

      デフォルトのポートは、PGPORT 環境変数またはコンパイル済みデフォルトで示されます。

    • デフォルトのデータベースを定義する -l オプション

      このオプションにより、初期化時に自動的に作成された postgres データベースとは異なるデフォルトのデータベースを選択できます。

3.6.4. pg_dump を使用してダンプされたデータベースの復元

pg_dump ユーティリティーを使用してダンプした SQL ダンプからデータベースを復元するには、以下の手順に従います。

前提条件

  • postgres スーパーユーザーまたはデータベースの管理者特権を持つユーザーとして、コマンドを実行する必要があります。

手順

  1. 新しいデータベースを作成します。

    $ createdb <db_name>
    Copy to Clipboard Toggle word wrap
  2. ダンプされたデータベースのオブジェクトを所有するか、オブジェクトに対するパーミッションが許可されたユーザーがすべて存在していることを検証してください。このようなユーザーが存在しない場合、復元は元の所有権とパーミッションでオブジェクトの再作成に失敗します。
  3. psql ユーティリティーを実行して、pg_dump ユーティリティーが作成したテキストファイルのダンプを復元します。

    $ psql <db_name> < <dump_file>
    Copy to Clipboard Toggle word wrap

    ここでの <dump_file> は、pg_dump コマンドの出力になります。非テキストファイルのダンプを復元するには、代わりに pg_restore ユーティリティーを使用します。

    $ pg_restore <non-plain_text_file>
    Copy to Clipboard Toggle word wrap

3.6.5. pg_dumpall を使用してダンプされたデータベースの復元

pg_dumpall ユーティリティーを使用してダンプしたデータベースクラスターからデータを復元するには、以下の手順に従います。

前提条件

  • postgres スーパーユーザーまたはデータベースの管理者特権を持つユーザーとして、コマンドを実行する必要があります。

手順

  1. ダンプされたデータベースのオブジェクトを所有するか、オブジェクトに対するパーミッションが許可されたユーザーがすべて、すでに存在していることを検証してください。このようなユーザーが存在しない場合、復元は元の所有権とパーミッションでオブジェクトの再作成に失敗します。
  2. psql ユーティリティーを実行して、pg_dumpall ユーティリティーにより作成されたテキストファイルのダンプを復元します。

    $ psql < <dump_file>
    Copy to Clipboard Toggle word wrap

    ここでの <dump_file> は、pg_dumpall コマンドの出力になります。

3.6.6. 別のサーバーでのデータベースの SQL ダンプの実行

pg_dump および psql はパイプに対する読み書きが可能であるため、あるサーバーから別のサーバーにデータベースを直接ダンプできます。

手順

  • データベースを、サーバーから別のサーバーにダンプするには、以下のコマンドを実行します。

    $ pg_dump -h <host_1> <db_name> | psql -h <host_2> <db_name>
    Copy to Clipboard Toggle word wrap

3.6.7. 復元中の SQL エラーの処理

デフォルトでは、SQL エラーが発生した場合、psql は実行を継続します。これにより、データベースの復元は一部のみとなります。

デフォルトの動作を変更するには、ダンプを復元する際に以下のいずれかの方法を使用します。

前提条件

  • postgres スーパーユーザーまたはデータベースの管理者特権を持つユーザーとして、コマンドを実行する必要があります。

手順

  • ON_ERROR_STOP 変数を設定して SQL エラーが発生した場合は、終了ステータス 3 で psql を終了します。

    $ psql --set ON_ERROR_STOP=on <db_name> < <dump_file>
    Copy to Clipboard Toggle word wrap
  • ダンプ全体が単一のトランザクションとして復元されるように指定して、復元が完全に完了するかキャンセルされるようにします。

    • psql ユーティリティーを使用してテキストファイルのダンプを復元する場合:

      $ psql -1
      Copy to Clipboard Toggle word wrap
    • pg_restore ユーティリティーを使用してテキストファイル以外のダンプを復元する場合:

      $ pg_restore -e
      Copy to Clipboard Toggle word wrap

    この方法を使用する場合、小さなエラーでも、すでに何時間も実行されている復元操作がキャンセルされる可能性があることに注意してください。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat