pg_dumpは、 が提供する論理バックアップツールです。 クラスタ内のデータベースをスクリプトファイルまたはアーカイブファイルにバックアップするために使用されます。
背景情報
pg_dumpは、単一のデータベースをバックアップするために使用されます。 現在のデータベースがアクセスされている場合でも、アクセスされたデータに対して一貫したバックアップが作成されます。 バックアッププロセスでは、他のユーザーがデータベースを読み書きすることはできません。 詳細については、「pg_dump」をご参照ください。
PolarToolsのpg_dumpツールは、PostgreSQL Communityのそれとは異なります。 PolarToolsのpg_dumpツールは、 に適合しています。 PostgreSQL Communityでpg_dumpツールを使用すると、不明な例外が発生したり、不完全なデータがバックアップされることがあります。
バックアップファイル形式
スクリプトファイル: データベースの再構築とバックアップに使用されるSQL文を含む、データベースの管理に使用されるSQL文を含むプレーンテキストファイル。
アーカイブファイル: pg_restoreを使用してデータベースを再構築するために必要なファイル。
出力ファイルの形式は、-Fc、-Fd、-Ftがtarで圧縮されています。 -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。 次のいずれかの形式を選択できます。
|
-f file (-- file=file) | バックアップデータを送信するファイル名を指定します。
|
-j njobs (-- jobs=njobs) | テーブルを並列にバックアップするために使用するジョブの数を指定します。 このオプションは、ディレクトリ形式と共に使用する必要があります。 説明 システムがテーブルを並行してバックアップする前に、データベースの変更に使用されるDDLおよびDMLのプロセスを停止する必要があります。 |
-n pattern (-- schema=pattern) | スキーマがpattern値と一致するデータのみをバックアップするように指定します。 このオプションを指定しない場合は, データベース内のすべての非システムスキーマを使用するデータがバックアップされます。 説明
|
-Nパターン (-- exclude-schema=pattern) | スキーマがpattern値と一致しないデータをバックアップします。 説明
|
-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オプションを指定して、指定したスキーマに一致するテーブルのバックアップを除外できます。 説明
|
-v (-- verbose) | バックアップ中に冗長モードを使用することを指定します。 |
-V (-- version) | pg_dumpバージョンが表示され、システムが終了を指示することを指定します。 |
-x (-- no-privilegesまたは -- no-acl) | ファイルをバックアップするためのアクセス権を取り消すことを指定します。これはGRANTまたはREVOKE文に相当します。 |
-Z 0 .. 9 (-- compress=0 .. 9) | 圧縮レベルを指定します。 0は、ファイルが圧縮されないことを指定します。 説明
|
-- column-insertsおよび -- attribute-inserts | 明示的な列名を持つINSERTコマンドとしてデータをバックアップすることを指定します。
|
-- 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-data、data、またはpost-dataです。 複数のセクションオプションを指定できます。 デフォルトでは、すべてのsectionオプションで指定されたデータがバックアップされます。 説明
|
-- serializable-deferraable | シリアル化可能なトランザクションをバックアップに使用することを指定します。 説明
|
-- snapshot=snapshotname | システムがデータベースをバックアップするときに、指定された同期スナップショットを使用することを指定します。 |
-- strict-names | -n/-- schemaで指定された各スキーマと-t/-- tableで指定された各テーブル修飾子を使用して、ソースデータベース内の少なくとも1つのスキーマとテーブルを照合することを指定します。 説明
|
-- 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_countsをfalseに設定します。
例
次のコマンドを実行して、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