このトピックでは、pg_restoreを使用して、接尾辞が付いている論理バックアップファイルからデータを復元する方法について説明します。ApsaraDB RDS for PostgreSQLインスタンスまたはオンプレミスPostgreSQLデータベースにダンプします。
テーブル内のデータなど、少量のデータの場合は、論理バックアップファイルを使用してデータを復元することをお勧めします。 大量のデータの場合は、完全な物理バックアップファイルから新しいRDSインスタンスに復元し、data Transmission Service (DTS) を使用して元のRDSインスタンスにデータを移行することを推奨します。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンス間のデータ移行」をご参照ください。
データ復元方法の詳細については、「データ復元方法の概要」をご参照ください。
前提条件
RDSインスタンスの論理バックアップが作成されます。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスの論理バックアップの作成」をご参照ください。
使用上の注意
デフォルトのPostgresデータベースにデータを復元しないことを推奨します。
テーブルのデータを復元するとき、システムはテーブルが依存するデータベースオブジェクトを復元しません。 復元は失敗する可能性があります。
データベースのデータを復元する
論理バックアップファイルを格納するElastic Compute Service (ECS) インスタンスまたはオンプレミスホストにログインし、次のコマンドを実行してデータベースのデータを復元します。
pg_restore -h '<ホスト名>' -U <ユーザー名> -p <ポート> -d <dbname> -c <dumpdir>
パラメーター
説明
hostname
RDSインスタンスへの接続に使用されるエンドポイント。
説明内部エンドポイントを使用してECSインスタンスをRDSインスタンスに接続する場合は、ECSインスタンスとRDSインスタンスが同じネットワークタイプを使用していることを確認してください。 両方のインスタンスが仮想プライベートクラウド (VPC) ネットワークタイプを使用している場合は、同じVPCに存在することを確認してください。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのエンドポイントとポート番号の表示と変更」をご参照ください。
パブリックエンドポイントを使用してオンプレミスホストまたはECSインスタンスをRDSインスタンスに接続する場合は、パブリックエンドポイントがRDSインスタンスに割り当てられていることを確認してください。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのエンドポイントとポート番号の表示と変更」および「ApsaraDB RDS for PostgreSQLインスタンスのパブリックエンドポイントの申請またはリリース」をご参照ください。
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
CLIに
password:
が表示されている場合は、RDSインスタンスの特権アカウントのパスワードを入力し、Enterキーを押します。説明組み込みのplpgsql拡張機能によって生成されるアラートは無視できます。
テーブルのデータを復元する
論理バックアップファイルを格納するECSインスタンスまたはオンプレミスホストにログインし、次のコマンドを実行してテーブルのデータを復元します。
pg_restore -h '<ホスト名>' -U <ユーザー名> -p <ポート> -d <dbname> -t <テーブル> -c <dumpdir>
パラメーター
説明
hostname
RDSインスタンスへの接続に使用されるエンドポイント。
説明内部エンドポイントを使用してECSインスタンスをRDSインスタンスに接続する場合は、ECSインスタンスとRDSインスタンスが同じネットワークタイプを使用していることを確認してください。 両方のインスタンスがVPCネットワークタイプを使用する場合は、同じVPCに存在することを確認してください。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスの内部およびパブリックエンドポイントとポート番号の表示と変更」をご参照ください。
パブリックエンドポイントを使用してオンプレミスホストまたはECSインスタンスをRDSインスタンスに接続する場合は、パブリックエンドポイントがRDSインスタンスに割り当てられていることを確認してください。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのエンドポイントとポート番号の表示と変更」および「ApsaraDB RDS for PostgreSQLインスタンスのパブリックエンドポイントの申請またはリリース」をご参照ください。
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
CLIに
password:
が表示されている場合は、RDSインスタンスの特権アカウントのパスワードを入力し、Enterキーを押します。
データを除外したデータベースのスキーマを復元する
論理バックアップファイルを格納するECSインスタンスまたはオンプレミスホストにログインし、次のコマンドを実行してデータベースのスキーマのみを復元します。
pg_restore -h '<ホスト名>' -U <ユーザー名> -p <ポート> -d <dbname> -s <dumpdir>
パラメーター
説明
hostname
RDSインスタンスへの接続に使用されるエンドポイント。
説明内部エンドポイントを使用してECSインスタンスをRDSインスタンスに接続する場合は、ECSインスタンスとRDSインスタンスが同じネットワークタイプを使用していることを確認してください。 両方のインスタンスがVPCネットワークタイプを使用する場合は、同じVPCに存在することを確認してください。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスの内部およびパブリックエンドポイントとポート番号の表示と変更」をご参照ください。
パブリックエンドポイントを使用してオンプレミスホストまたはECSインスタンスをRDSインスタンスに接続する場合は、パブリックエンドポイントがRDSインスタンスに割り当てられていることを確認してください。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのエンドポイントとポート番号の表示と変更」および「ApsaraDB RDS for PostgreSQLインスタンスのパブリックエンドポイントの申請またはリリース」をご参照ください。
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
CLIに
password:
が表示されている場合は、RDSインスタンスの特権アカウントのパスワードを入力し、Enterキーを押します。説明埋め込みplpgsql拡張によって生成されるアラートは無視できます。