pg_restore を使用して、.dump 形式の論理バックアップファイルから ApsaraDB RDS for PostgreSQL インスタンスまたはオンプレミスの PostgreSQL データベースへデータを復元します。
単一テーブルなどの少量のデータの場合、論理バックアップの解凍は容易です。大規模なデータセットの場合は、フル物理バックアップから新しい RDS インスタンスに解凍した後、Data Transmission Service (DTS) を使用して元のインスタンスにデータを移行します。すべての解凍メソッドについては、「解凍」をご参照ください。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
RDS インスタンスに対して作成済みの論理バックアップがあること。詳細については、「ApsaraDB RDS for PostgreSQL インスタンスの論理バックアップを作成する」をご参照ください。
.dumpバックアップファイルが、pg_restoreを実行する ECS インスタンスまたはオンプレミスホスト上に存在すること。
注意事項
デフォルトの
postgresデータベースへデータを復元しないでください。単一テーブルを復元する場合、
pg_restoreはそのテーブルが依存するデータベースオブジェクトを復元しません。これらの依存関係がターゲットデータベースに存在しない場合、復元が失敗する可能性があります。
データベースの復元
バックアップファイルを格納する ECS インスタンスまたはオンプレミスホストにログインし、以下のコマンドを実行します。
pg_restore -h '<hostname>' -U <username> -p <port> -d <dbname> -c <dumpdir>| パラメーター | 説明 |
|---|---|
hostname | RDS インスタンスへの接続に使用するエンドポイントです。内部エンドポイントを使用する場合、ECS インスタンスと RDS インスタンスは同じネットワークタイプ(VPC またはクラシックネットワーク)を使用している必要があります。両方とも VPC ネットワークタイプを使用する場合は、同一の VPC 内にある必要があります。「ApsaraDB RDS for PostgreSQL インスタンスのエンドポイントおよびポート番号の表示と変更」をご参照ください。パブリックエンドポイントを使用する場合は、あらかじめ割り当てる必要があります。「ApsaraDB RDS for PostgreSQL インスタンスへのパブリックエンドポイントの申請またはリリース」をご参照ください。 |
username | RDS インスタンスの特権アカウントのユーザー名です。 |
port | RDS インスタンスへの接続に使用するポート番号です。 |
dbname | 対象データベースの名前 |
-c(任意) | 再作成前に既存のデータベースオブジェクトを削除します。「pg_restore」をご参照ください。 |
dumpdir | 論理バックアップファイルのパスです。 |
例:
pg_restore -h 'pgm-bpxxxxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht02 -c /tmp/testdb.dumpPassword: のプロンプトが表示されたら、特権アカウントのパスワードを入力し、Enter キーを押します。

組み込みの plpgsql 拡張による警告は無視してください。
テーブルの復元
バックアップファイルを格納する ECS インスタンスまたはオンプレミスホストにログインし、以下のコマンドを実行します。
pg_restore -h '<hostname>' -U <username> -p <port> -d <dbname> -t <table> -c <dumpdir>-t <table> フラグは、復元対象のテーブルを指定します。その他のパラメーターは、「データベースの復元」と同一です。
| パラメーター | 説明 |
|---|---|
table | 復元対象のテーブル名です。 |
例:
pg_restore -h 'pgm-bpxxxxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht01 -t zhttest0808 -c /tmp/testdb2.dumpPassword: のプロンプトが表示されたら、特権アカウントのパスワードを入力し、Enter キーを押します。

単一テーブルを復元する場合、そのテーブルが依存するデータベースオブジェクトは復元されません。これらのオブジェクトがターゲットデータベースにすでに存在することを確認してください。存在しない場合、復元が失敗する可能性があります。
データベーススキーマの復元
データを復元せずにデータベーススキーマのみを復元するには、ECS インスタンスまたはオンプレミスホストにログインし、以下のコマンドを実行します。
pg_restore -h '<hostname>' -U <username> -p <port> -d <dbname> -s <dumpdir>-s フラグは、データをロードせずにスキーマのみを復元します。その他のパラメーターは、「データベースの復元」と同一です。
例:
pg_restore -h 'pgm-bpxxxxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht03 -s /tmp/testdb2.dumpPassword: のプロンプトが表示されたら、特権アカウントのパスワードを入力し、Enter キーを押します。

組み込みの plpgsql 拡張による警告は無視してください。