3.6. 論理ダンプを使用した PostgreSQL データのバックアップと復元


PostgreSQL データの論理バックアップは、データの復元に必要な SQL ステートメントで構成されます。物理バックアップに対する論理バックアップの利点は、異なるハードウェア構成や PostgreSQL バージョンでもデータを復元できることです。

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

SQL ダンプは、次の PostgreSQL クライアントアプリケーションによって実現されます。

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

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

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

3.6.1. SQL ダンプの利点と欠点

SQL ダンプは、データベースの構造とデータを SQL ステートメントの形式で含むテキストファイルです。

利点:

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

欠点:

  • SQL ダンプは、ファイルシステムレベルのバックアップに比べて時間がかかります。

3.6.2. pg_dump を使用した単一の PostgreSQL データベースのバックアップ

pg_dump ユーティリティーを使用してデータベース構造とデータをファイルにエクスポートすることにより、単一の PostgreSQL データベースのバックアップを作成できます。

前提条件

  • postgres スーパーユーザーまたはデータベース管理者特権を持つユーザーとしてログインしている。

手順

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

    $ pg_dump <db_name> > <dump_file>

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

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

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

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

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

3.6.3. pg_dump を使用した単一の PostgreSQL データベースの復元

pg_restore ユーティリティーを使用してデータベース構造とデータを再作成することにより、SQL ダンプファイルから PostgreSQL データベースを復元できます。

前提条件

  • postgres スーパーユーザーまたはデータベース管理者特権を持つユーザーとしてログインしている。

手順

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

    $ createdb <db_name>
  2. ダンプされたデータベース内のオブジェクトを所有しているすべてのユーザー、またはそのオブジェクトに対する権限を付与されているすべてのユーザーがすでに存在することを検証します。このようなユーザーが存在しない場合、復元を実行しても、元の所有権と権限でオブジェクトが再作成されません。
  3. psql ユーティリティーを実行して、pg_dump ユーティリティーが作成したテキストファイルのダンプを復元します。

    $ psql <db_name> < <dump_file>

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

    $ pg_restore <non-plain_text_file>

3.6.4. pg_dumpall を使用した PostgreSQL サーバー上の全データベースのバックアップ

pg_dumpall ユーティリティーを使用して、すべてのデータベースとクラスター全体のデータを 1 つのファイルにエクスポートすることにより、PostgreSQL サーバー上の全データベースのバックアップを作成できます。

前提条件

  • postgres スーパーユーザーまたはデータベース管理者特権を持つユーザーとしてログインしている。

手順

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

    $ pg_dumpall > <dump_file>

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

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

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

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

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

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

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

3.6.5. pg_dumpall を使用した PostgreSQL サーバー上の全データベースの復元

psql ユーティリティーを使用してデータベースクラスター全体を再作成することにより、pg_dumpall ファイルから PostgreSQL サーバー上の全データベースを復元できます。

前提条件

  • postgres スーパーユーザーまたはデータベース管理者特権を持つユーザーとしてログインしている。

手順

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

    $ psql < <dump_file>

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

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

デフォルトでは、SQL エラーが発生した場合でも psql ユーティリティーは実行を継続します。これは、データベースが部分的にしか復元されない原因となります。データの整合性を確保するために、エラー時に停止するように psql を設定できます。

前提条件

  • postgres スーパーユーザーまたはデータベース管理者特権を持つユーザーとしてログインしている。

手順

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

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

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

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

      $ pg_restore -e

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

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る