ウェブサイト検索

PostgreSQLデータベースからスキーマを復元する方法


PostgreSQLのバックアップファイルから特定のスキーマを1つまたはいくつかだけ復元する場合、pg_dumpによって作成されたアーカイブから特定のPostgreSQLデータベースを復元するために使用されるpg_restoreコマンドを使用できます。

このガイドでは、pg_restore コマンドラインツールを使用して、PostgreSQL データベースのバックアップファイルから特定のスキーマを復元する方法を示します。

PostgreSQLデータベースからのデータベーススキーマの復元

こちらは、PostgreSQLデータベースバックアップファイルから選択したスキーマを復元するpg_restoreコマンドの例です:

上記のコマンドの各オプションの意味を見てみましょう:

  • -d – サーバー上に存在する必要があるターゲットデータベース名を定義します。pg_restore はそれに接続し、データベースに直接復元します。
  • -n または --schema – 復元されるスキーマの名前を定義し、pg_restore に対して指定されたスキーマ内のオブジェクトのみを復元するよう指示します。
  • backup.dump – データベースバックアップファイルの名前です。この場合、バックアップはカスタム形式であり、pg_dumpツールがサポートする形式の一つです。

PostgreSQLデータベースから複数のスキーマを復元する

複数のスキーマを復元するには、示されているように複数の -n を使用してください。

$ pg_restore -d testdb -n schema_name1 -n schema_name2 -n schema_name3 backup.dump
OR
pg_restore -d testdb --schema=schema_name1 --schema=schema_name2 --schema=schema_name3 backup.dump

新しいサーバーにバックアップファイルを復元する場合、復元プロセスを始める前に、バックアップで定義されたデータベースの所有者またはユーザーがサーバー上に作成されていることを確認してください。

pg_restore コマンドオプション

データベースの復元を行う際に使用できる他のいくつかの貴重なpg_restoreコマンドラインオプションがありますが、以下でいくつかを紹介します。

便利なオプションの1つは、-Cまたは--createオプションで、pg_restoreに対して、復元する前にクラスタに存在しない場合に-dオプションで指定したデータベースを作成するよう指示するために使用できます。

ここにコマンドの例があります:

$ pg_restore -d testdb -C -n schema_name  backup.dump
OR
pg_restore -d testdb --create -n schema_name backup.dump

注意: -C オプションが使用される場合、データベース名testdb(上記のコマンド内)は、最初のDROP DATABASE testdbおよびCREATE DATABASE testdbコマンドを実行するためだけに使用されますが、データはバックアップファイルに表示されるデータベース名に復元されます。

さらに、--cleanオプションを使用すると、pg_restoreは接続する前にターゲットデータベースをクリーン(削除)し、再作成します。

$ pg_restore --clean -d testdb -n schema_name backup.dump

さらに、復元を実行する際に同時に実行するジョブの数を指定することもできます。これは -j または --number-of-jobs を使用して行います。このフラグは、pg_restore に対して、データの読み込み、インデックスの作成、または制約の作成などの時間のかかるステップを指定されたジョブ数までの同時セッションを使用して並行処理するように指示します。

$ pg_restore -j 4 --clean -d testdb -n schema_name backup.dump
OR
pg_restore --number-of-jobs=4 --clean -d testdb -n schema_name backup.dump

上記のオプションは、サーバー、クライアント、およびネットワーク上のCPUコアの数やディスクの設定など、ハードウェア要因の影響を受けます。また、カスタムおよびディレクトリアーカイブ形式のみをサポートしています。

詳細については、以下に示すpg_restoreのマニュアルページを参照してください。

$ man pg_restore

それだけです! pg_restore は、PostgreSQLデータベース管理システムの便利なコマンドラインツールの1つです。この記事では、PostgreSQLデータベースのバックアップファイルから特定のスキーマを復元する方法について見てきました。

このガイドに関する質問やコメントについては、下記のフィードバックフォームを使用してご連絡ください。

関連記事: