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

ApsaraDB RDS:pg_restoreを使用して論理バックアップファイルからデータを復元する

最終更新日:Jan 16, 2024

このトピックでは、pg_restoreを使用して、接尾辞が付いている論理バックアップファイルからデータを復元する方法について説明します。ApsaraDB RDS for PostgreSQLインスタンスまたはオンプレミスPostgreSQLデータベースにダンプします。

説明
  • テーブル内のデータなど、少量のデータの場合は、論理バックアップファイルを使用してデータを復元することをお勧めします。 大量のデータの場合は、完全な物理バックアップファイルから新しいRDSインスタンスに復元し、data Transmission Service (DTS) を使用して元のRDSインスタンスにデータを移行することを推奨します。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンス間のデータ移行」をご参照ください。

  • データ復元方法の詳細については、「データ復元方法の概要」をご参照ください。

前提条件

RDSインスタンスの論理バックアップが作成されます。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスの論理バックアップの作成」をご参照ください。

使用上の注意

  • デフォルトのPostgresデータベースにデータを復元しないことを推奨します。

  • テーブルのデータを復元するとき、システムはテーブルが依存するデータベースオブジェクトを復元しません。 復元は失敗する可能性があります。

データベースのデータを復元する

  1. 論理バックアップファイルを格納するElastic Compute Service (ECS) インスタンスまたはオンプレミスホストにログインし、次のコマンドを実行してデータベースのデータを復元します。

    pg_restore -h '<ホスト名>' -U <ユーザー名> -p <ポート> -d <dbname> -c <dumpdir>

    パラメーター

    説明

    hostname

    RDSインスタンスへの接続に使用されるエンドポイント。

    説明

    username

    RDSインスタンスの特権アカウントのユーザー名。

    port

    RDSインスタンスへの接続に使用されるポート。

    dbname

    データを復元するデータベースの名前。

    -c (オプション)

    -cは、データ復元前に必要なデータベースのデータをクリアするかどうかを指定します。 詳細については、「pg_restore」をご参照ください。

    dumpdir

    論理バックアップファイルのディレクトリと名前。

    例:

    pg_restore -h 'pgm -bpxxxxxx.pg.rds.aliyuncs.com ' -U zht -p 5432 -d zht02 -c /tmp/testdb.dump
  2. CLIにpassword: が表示されている場合は、RDSインスタンスの特権アカウントのパスワードを入力し、Enterキーを押します。

    image.png

    説明

    組み込みのplpgsql拡張機能によって生成されるアラートは無視できます。

テーブルのデータを復元する

  1. 論理バックアップファイルを格納するECSインスタンスまたはオンプレミスホストにログインし、次のコマンドを実行してテーブルのデータを復元します。

    pg_restore -h '<ホスト名>' -U <ユーザー名> -p <ポート> -d <dbname> -t <テーブル> -c <dumpdir>

    パラメーター

    説明

    hostname

    RDSインスタンスへの接続に使用されるエンドポイント。

    説明

    username

    RDSインスタンスの特権アカウントのユーザー名。

    port

    RDSインスタンスへの接続に使用されるポート。

    dbname

    データを復元するデータベースの名前。

    table

    データを復元するテーブルの名前。

    -c (オプション)

    -cは、データ復元前に必要なデータベースのデータをクリアするかどうかを指定します。 詳細については、「pg_restore」をご参照ください。

    dumpdir

    論理バックアップファイルのディレクトリと名前。

    例:

    pg_restore -h 'pgm -bpxxxxxx.pg.rds.aliyuncs.com ' -U zht -p 5432 -d zht01 -t zhttest0808 -c /tmp/testdb2.dump
  2. CLIにpassword: が表示されている場合は、RDSインスタンスの特権アカウントのパスワードを入力し、Enterキーを押します。

    image.png

データを除外したデータベースのスキーマを復元する

  1. 論理バックアップファイルを格納するECSインスタンスまたはオンプレミスホストにログインし、次のコマンドを実行してデータベースのスキーマのみを復元します。

    pg_restore -h '<ホスト名>' -U <ユーザー名> -p <ポート> -d <dbname> -s <dumpdir>

    パラメーター

    説明

    hostname

    RDSインスタンスへの接続に使用されるエンドポイント。

    説明

    username

    RDSインスタンスの特権アカウントのユーザー名。

    port

    RDSインスタンスへの接続に使用されるポート。

    dbname

    復元するスキーマのデータベースの名前。

    -s

    -s: データベースのスキーマのみを復元するように指定します。 データベースのデータは復元されません。 詳細については、「pg_restore」をご参照ください。

    dumpdir

    論理バックアップファイルのディレクトリと名前。

    例:

    pg_restore -h 'pgm -bpxxxxxx.pg.rds.aliyuncs.com ' -U zht -p 5432 -d zht03 -s /tmp/testdb2.dump
  2. CLIにpassword: が表示されている場合は、RDSインスタンスの特権アカウントのパスワードを入力し、Enterキーを押します。

    image.png

    説明

    埋め込みplpgsql拡張によって生成されるアラートは無視できます。