すべてのプロダクト
Search
ドキュメントセンター

PolarDB:pg_dump

最終更新日:Jun 27, 2024

pg_dumpは、 が提供する論理バックアップツールです。 クラスタ内のデータベースをスクリプトファイルまたはアーカイブファイルにバックアップするために使用されます。

背景情報

pg_dumpは、単一のデータベースをバックアップするために使用されます。 現在のデータベースがアクセスされている場合でも、アクセスされたデータに対して一貫したバックアップが作成されます。 バックアッププロセスでは、他のユーザーがデータベースを読み書きすることはできません。 詳細については、「pg_dump」をご参照ください。

説明

PolarToolsのpg_dumpツールは、PostgreSQL Communityのそれとは異なります。 PolarToolsのpg_dumpツールは、 に適合しています。 PostgreSQL Communityでpg_dumpツールを使用すると、不明な例外が発生したり、不完全なデータがバックアップされることがあります。

バックアップファイル形式

  • スクリプトファイル: データベースの再構築とバックアップに使用されるSQL文を含む、データベースの管理に使用されるSQL文を含むプレーンテキストファイル。

  • アーカイブファイル: pg_restoreを使用してデータベースを再構築するために必要なファイル。

    出力ファイルの形式は、-Fc-Fd-Fttarで圧縮されています。 -Fcはカスタム形式です。 -Fdはディレクトリ形式です。 -Ftはアーカイブ形式です。 プロジェクトごとに -Fcおよび -Fdアーカイブファイルを選択して並べ替えることができます。 デフォルトでは、-Fcファイルと-Fdファイルは圧縮されます。 -Ftファイルは圧縮されていません。 データを復元するときに-Ftファイルを再ソートすることはできません。

    説明

    -Fdファイルのみが並列バックアップをサポートします。

    アーカイブファイルでpg_dumpを使用して、データベース全体をバックアップできます。 pg_restoreを使用して、アーカイブファイルを確認したり、復元する必要があるデータを選択したりできます。

構文

pg_dump [connection-option...] [option...] [dbname]

表 1. Parameters

パラメーター

説明

connection-option

データベースへの接続に使用するパラメーターを制御するコマンドラインオプションを指定します。 詳細は、「connection-option」をご参照ください。

option

出力内容と形式を制御するために使用されるコマンドラインオプションを指定します。 詳細は、「option」をご参照ください。

dbname

バックアップするデータベースの名前を指定します。

表 2. connection-option

コマンドラインオプション

説明

-d dbname (-- dbname=dbname)

接続するデータベースの名前を指定します。

-h host (-- host=host)

サーバーを実行するコンピューターのホスト名を指定します。 この値がスラッシュで始まる場合、その値はUNIXドメインソケットのディレクトリとして使用されます。 デフォルト値は、環境変数PGHOSTの値です。

-p port (-- port=port)

サーバーが接続をリッスンするTCPポートまたはローカルUNIXドメインソケットファイル拡張子を指定します。 デフォルトでは、ポート番号は環境変数PGPORTの値に含まれています。 値のポート番号が使用されない場合、プログラムのデフォルト値が使用されます。

-U username (-- username=username)

データベースへの接続に使用するアカウントのユーザー名を指定します。

-w (-- no-password)

pg_dumpがデータベースに接続するときにパスワードの入力を求められないことを指定します。

-W (-- password)

pg_dumpがデータベースに接続するときにパスワードの入力を求められることを指定します。

説明

このオプションはオプションです。

-- role=rolename

バックアップの作成に使用するロール名を指定します。

表 3. option

コマンドラインオプション

説明

dbname

バックアップするデータベースの名前を指定します。 このパラメーターを指定しない場合、PGDATABASE環境変数の値が使用されます。

-a (-- data-only)

データのみをバックアップするように指定します。 スキーマはバックアップされません。

説明

このオプションは、バックアップするテーブルデータ、BLOB、およびシーケンス値を指定します。

-b (-- blobs)

デフォルトでBLOBをバックアップすることを指定します。 -- schema-table、または -- schemaのみを指定した場合、BLOBはバックアップされません。

重要

ブロブはデータとして表示されます。 -- dataのみを指定すると、データをバックアップできます。 -- schemaのみを指定した場合、データはバックアップできません。

-B (-- no-blobs)

BLOBをバックアップしないことを指定します。

説明

-b-Bの両方を指定すると、BLOBがバックアップされます。

-c (-- clean)

データベースオブジェクトの作成に使用するコマンドを実行する前に、既存のデータベースオブジェクトを削除することを指定します。 復元中のエラーを防ぐため、-- if existsオプションを指定することを推奨します。

説明

このオプションは、スクリプトファイルにのみ適用されます。 このオプションは、pg_restoreを呼び出すときにアーカイブファイルに指定できます。

-C (-- create)

コマンドを実行してデータベースを作成して接続することを指定します。 -- cleanを指定すると、このスクリプトが実行され、既存のデータベースが削除され、データベースが作成され、データベースへの接続が再確立されます。

-- no-aclを指定せずに -- createを指定した場合、データベースのコメント、構成情報、およびアクセス制御情報もバックアップ時にバックアップされます。

説明

このオプションは、スクリプトファイルにのみ適用されます。 このオプションは、pg_restoreを呼び出すときにアーカイブファイルに指定できます。

-Eエンコーディング (-- encoding=encoding)

指定した文字エンコード方式でバックアップを作成することを指定します。 デフォルトでは、データベース文字エンコード方式を使用してバックアップが作成されます。 PGCLIENTENCODING環境変数の値をバックアップのエンコード方法として使用することもできます。

-F形式 (-- format=format)

バックアップファイルの形式を指定します。 デフォルト値: p。 次のいずれかの形式を選択できます。

  • p (plain ): スクリプトファイルが生成されます。

  • c (custom ): pg_restoreの入力内容として使用できるカスタム形式のアーカイブファイルが生成されます。 デフォルトでは、この形式のアーカイブファイルは圧縮されます。

  • d (directory ): pg_restoreの入力内容として使用できるディレクトリ形式のアーカイブファイルが生成されます。 デフォルトでは、この形式のアーカイブファイルは圧縮されます。 さらに、この形式は並列バックアップをサポートしています。

  • t (tar ): pg_restoreの入力内容として使用できるtar形式のアーカイブファイルが生成されます。 tar形式のアーカイブファイルは圧縮できません。 さらに、tar形式を使用する場合、システムがデータを復元するときに、テーブルデータ項目の相対的な順序を変更することはできません。

-f file (-- file=file)

バックアップデータを送信するファイル名を指定します。

  • このパラメーターは、ディレクトリ形式を使用してバックアップを実行し、ファイルではなく必要なディレクトリを指定する場合に必要です。

  • 別のファイル形式を使用してバックアップを実行する場合、このパラメーターはオプションです。 デフォルトでは、標準のファイル形式がバックアップに使用されます。

-j njobs (-- jobs=njobs)

テーブルを並列にバックアップするために使用するジョブの数を指定します。 このオプションは、ディレクトリ形式と共に使用する必要があります。

説明

システムがテーブルを並行してバックアップする前に、データベースの変更に使用されるDDLおよびDMLのプロセスを停止する必要があります。

-n pattern (-- schema=pattern)

スキーマがpattern値と一致するデータのみをバックアップするように指定します。 このオプションを指定しない場合は, データベース内のすべての非システムスキーマを使用するデータがバックアップされます。

説明
  • -nを指定した場合、pg_dumpは、指定されたスキーマが依存する可能性のあるデータベースオブジェクトをバックアップしません。 したがって、特定スキーマのバックアップの結果が空のデータベースに正常に復元されることを保証することはできません。

  • -nを指定した場合、pg_dumpは、スキーマが指定されたスキーマと一致しないBLOBなどのデータをバックアップしません。 blobをバックアップするには、バックアップ中に -- blobコマンドラインオプションを追加します。

-Nパターン (-- exclude-schema=pattern)

スキーマがpattern値と一致しないデータをバックアップします。

説明
  • -n-Nの両方を指定した場合、-nで指定したスキーマと一致するスキーマのデータはバックアップされますが、-Nで指定したスキーマと一致するスキーマのデータはバックアップされません。

  • -Nのみを指定した場合、スキーマが -Nで指定したスキーマと一致するデータはバックアップされません。

-o (-- oids)

各テーブルのオブジェクト識別子 (OID) をバックアップすることを指定します。 アプリケーションが外部キー制約などのシナリオでOID列をインポートするメソッドを使用する場合は、このオプションを指定します。 それ以外の場合は、このオプションを指定しないでください。

-O (-- no-owner)

システムがソースデータベースと一致しようとしたときに、オブジェクトの所有権を指定することを指定します。

説明

このオプションは、スクリプトファイルにのみ適用されます。 このオプションは、pg_restoreを呼び出すときにアーカイブファイルに指定できます。

-s (-- schema-only)

オブジェクトスキーマのみをバックアップするように指定します。 データはバックアップされません。

-S username (-- superuser=username)

トリガーの無効化に使用するスーパーユーザー名を指定します。 このオプションは、-- disable-triggersを使用するときに指定できます。

-tパターン (-- table=pattern)

スキーマがpattern値と一致するテーブルのみをバックアップするように指定します。 複数のテーブルを選択するには、複数の -tオプションを指定するか、スキーマパラメーターをワイルドカードに設定します。

説明

-tを指定すると、pg_dumpは、選択したテーブルが依存する可能性のある他のデータベースオブジェクトをバックアップしません。 したがって、特定スキーマのバックアップの結果が空のデータベースに正常に復元されることを保証することはできません。

-Tパターン (-- exclude-table=pattern)

スキーマがpattern値と一致するテーブルをバックアップしないことを指定します。 複数の -Tオプションを指定して、指定したスキーマに一致するテーブルのバックアップを除外できます。

説明
  • -t-Tの両方を指定した場合、スキーマが -t値の1つ以上に一致するテーブルはバックアップされますが、スキーマが -T値に一致するテーブルはバックアップされません。

  • -Tのみを指定した場合、スキーマが -T値と一致するテーブルはバックアップされません。

-v (-- verbose)

バックアップ中に冗長モードを使用することを指定します。

-V (-- version)

pg_dumpバージョンが表示され、システムが終了を指示することを指定します。

-x (-- no-privilegesまたは -- no-acl)

ファイルをバックアップするためのアクセス権を取り消すことを指定します。これはGRANTまたはREVOKE文に相当します。

-Z 0 .. 9 (-- compress=0 .. 9)

圧縮レベルを指定します。 0は、ファイルが圧縮されないことを指定します。

説明
  • カスタムアーカイブファイルの場合、単一のテーブルデータセグメントが圧縮されます。 デフォルトでは、中程度の圧縮レベルが使用されます。

  • デフォルトでは、スクリプトファイルは圧縮されません。 圧縮レベルを0以外の値に設定すると、出力ファイル全体が圧縮されます。

-- column-insertsおよび -- attribute-inserts

明示的な列名を持つINSERTコマンドとしてデータをバックアップすることを指定します。

INSERT INTO table (column, ...) VALUES ...

-- disable-ドル引用

関数本体のドル引用を無効にすることを指定します。

-- disable-triggers

必要なテーブルのトリガーを無効にすることを指定します。 このオプションは、データバックアップを作成する場合にのみ適用されます。 このオプションを使用する場合は、-Sを使用してスーパーユーザーを指定する必要があります。

説明

このオプションは、スクリプトファイルにのみ適用されます。 このオプションは、pg_restoreを呼び出すときにアーカイブファイルに指定できます。

-- enable-row-security

アクセスを許可されているテーブルの一部のコンテンツのみをバックアップできるように指定します。 このオプションは、バックアップするテーブルのコンテンツが行レベルのセキュリティである場合にのみ適用されます。

重要

このオプションを使用するには、INSERTを使用してバックアップを実行する必要があります。これは、システムがデータを復元するときにCOPY FROMが行レベルのセキュリティをサポートしないためです。

-- exclude-table-data=pattern

pattern値と一致するスキーマを持つテーブルのデータをバックアップしないことを指定します。 -- exclude-table-dataオプションを複数指定して、指定したスキーマに一致するテーブルがバックアップされないようにすることができます。

説明

データベース内のすべてのテーブルデータがバックアップされないようにする方法の詳細については、「 -- schemaのみ」をご参照ください。

-- if-exists

IF EXISTS句などの条件付きコマンドを使用してデータベースオブジェクトをクリアすることを指定します。 このオプションを指定する場合は、設定を有効にするために -- cleanも指定する必要があります。

-- 挿入物

データをINSERTコマンドとしてバックアップすることを指定します。

重要

このオプションを指定すると、システムがデータを復元するときにデータの再ソートに失敗することがあります。 -- column-insertsを使用することを推奨します。

-- load-via-partition-root

システムがテーブルパーティションのデータをバックアップするときに、COPYまたはINSERTコマンドを実行することを指定します。

説明

このオプションを使用して作成したアーカイブファイルを復元する場合は、並列バックアップを実行する際に注意することを推奨します。

-- lock-wait-timeout=タイムアウト

共有ロックの取得に使用する待ち時間を指定します。

-ノーコメント

コメントをバックアップしないことを指定します。

-出版物なし

パブリケーションをバックアップしないことを指定します。

-- no-セキュリティラベル

セキュリティラベルをバックアップしないことを指定します。

-- no-サブスクリプション

サブスクリプション情報をバックアップしないことを指定します。

-- no-sync

pg_dumpがすぐにデータを返すことを指定します。 すべてのファイルがディスクに安全に書き込まれるのを待つ必要はありません。

-- no-synchronized-スナップショット

pg_dump -jをサーバーで実行できることを指定します。

-- no-tablespaces

すべてのオブジェクトが既定の表領域に作成されることを指定します。

説明

このオプションは、スクリプトファイルにのみ適用されます。 このオプションは、pg_restoreを呼び出すときにアーカイブファイルに指定できます。

-- no-unlogged-table-data

未ログのテーブルの内容をバックアップしないことを指定します。

-- quote-all-identifiers

システムがすべての識別子を強制的に引用するように指定します。

-- rows-per-insert=nrows

データベースをINSERTコマンドとしてバックアップする場合、各INSERTコマンドの最大行数を指定します。

-- section=sectionname

sectionで指定したデータのみをバックアップします。 セクション名は、pre-datadata、またはpost-dataです。 複数のセクションオプションを指定できます。 デフォルトでは、すべてのsectionオプションで指定されたデータがバックアップされます。

説明
  • dataオプションは、実際のテーブルデータ、BLOB、およびシーケンス値を指定します。

  • post-dataオプションは、インデックス、トリガー、およびルールと制約の定義を指定します。 検証済みチェック制約は指定されません。

  • pre-dataオプションは、他のすべてのデータ定義項目を指定します。

-- serializable-deferraable

シリアル化可能なトランザクションをバックアップに使用することを指定します。

説明
  • pg_dumpを使用しているときに読み取りトランザクションと書き込みトランザクションがアクティブ状態の場合、システムは遅延した不定期間後にデータのバックアップを開始します。

  • pg_dumpを使用しているときに読み取りトランザクションと書き込みトランザクションがアクティブ状態でない場合、このオプションに違いはありません。

-- snapshot=snapshotname

システムがデータベースをバックアップするときに、指定された同期スナップショットを使用することを指定します。

-- strict-names

-n/-- schemaで指定された各スキーマと-t/-- tableで指定された各テーブル修飾子を使用して、ソースデータベース内の少なくとも1つのスキーマとテーブルを照合することを指定します。

説明
  • 一致するスキーマまたはテーブルがない場合、-- strict-namesが指定されていなくても、pg_dumpはエラーを返します。

  • このオプションは、-N /-- exclude schema-T /-- exclude table、または -- exclude table dataには影響しません。

  • オブジェクトと一致しない除外パターンはエラーとは見なされません。

-- use-set-session-authorization

ALTER OWNERの代わりに、標準のSET SESSION AUTHORIZATION SQL文が生成されることを指定します。

-? (-- ヘルプ)

pg_dumpツールのヘルプ情報を表示します。

  • -aオプションを指定してデータのみをバックアップし、-- disable triggersを指定してテーブルのトリガーを無効にすると、pg_dumpは、pg_dumpがデータを挿入する前に、ユーザーテーブルのトリガーを無効にするコマンドを出力します。 データが挿入されると、pg_dumpはトリガーを有効にするコマンドを出力します。 復元が中断された場合、システムカタログはエラー状態のままである可能性があります。

  • バックアップファイルを復元したら、ANALYZEを実行して最適なパフォーマンスを確保できます。

  • pg_dumpが論理レプリケーションサブスクリプション情報をバックアップすると、pg_dumpはconnect=falseオプションを使用するCREATE subscriptionを生成します。 関係するホストが変更された場合、接続情報を変更する必要があります。 新しい全テーブルコピータスクが開始される前に、必要なテーブルを切り捨てることも適切である。

  • pg_dumpはSELECTステートメントを内部的に実行します。 pg_dumpの実行時にエラーが発生した場合は、psqlなどのツールを使用してデータベースから情報を選択できることを確認してください。 さらに、libpqフロントエンドライブラリで使用されるデフォルトの接続設定と環境変数が正しいことを確認します。

  • pg_dumpのデータベースアクティビティは、通常、統計コレクターによって収集されます。 これが望ましくない場合は、PGOPTIONSまたはALTER USERを使用してtrack_countsfalseに設定します。

  • 次のコマンドを実行して、mydbという名前のデータベースをSQLスクリプトファイルにバックアップします。

    pg_dump mydb > db.sql
  • 次のコマンドを実行して、新しく作成されたnewdbという名前のデータベースにSQLスクリプトをロードします。

    psql -d newdb -f db.sql
  • 次のコマンドを実行して、データベースをカスタム形式のアーカイブファイルにバックアップします。

    pg_dump -Fc mydb > db.dump
  • 次のコマンドを実行して, データベースをディレクトリ形式のアーカイブファイルにバックアップします。

    pg_dump -Fd mydb -f dumpdir
  • 次のコマンドを実行して、5つのワーカージョブを使用してデータベースをディレクトリ形式のアーカイブファイルに並行してバックアップします。

    pg_dump -Fd mydb -j 5 -f dumpdir
  • 次のコマンドを実行して、新しく作成されたnewdbというデータベースにアーカイブファイルをリロードします。

    pg_restore -d newdb db.dump
  • 次のコマンドを実行して、ファイルのバックアップ元と同じデータベースにアーカイブファイルをリロードし、そのデータベースの現在のコンテンツを消去します。

    pg_restore -d postgres -- clean -- create db.dump
  • 次のコマンドを実行して、mytabという名前の単一のテーブルをバックアップします。

    pg_dump -t mytab mydb > db.sql
  • 次のコマンドを実行して、detroitスキーマの名前がempで始まるすべてのテーブルをバックアップします。 employe_logという名前のテーブルはバックアップされません。

    pg_dump -t 'detroit.emp * ' -T detroit.employee_log mydb > db.sql
  • 次のコマンドを実行して、スキーマ名がeastまたはwestで始まり、gsmで終わるテーブルをバックアップします。 スキーマ名がtestのテーブルはバックアップされません。

    pg_dump -n 'east * gsm' -n 'west * gsm'-N' * test * 'mydb > db.sql
  • 次のコマンドを実行して、正規表現の表記を使用してスイッチを統合します。

    pg_dump -n '(east | west)* gsm' -N' * test * 'mydb > db.sql
  • 次のコマンドを実行して、名前がts_ で始まるテーブルを除くすべてのデータベースオブジェクトをバックアップします。

    pg_dump -T 'ts_* 'mydb > db.sql
  • -tおよび関連するスイッチで大文字または混合大文字の名前を指定するには、名前を二重引用符 (") で囲む必要があります。 それ以外の場合、名前は小文字として折りたたまれます。 ただし、シェルコマンドでは、二重引用符 (") の使用方法が異なります。 したがって、名前は順番に引用する必要があります。 名前が大文字と小文字の両方を含む単一のテーブルをバックアップするには、次のコマンドを実行します。

    pg_dump -t "\" MixedCaseName\"" mydb > mytab.sql