このトピックでは、pg_restore コマンドを使用して、論理バックアップファイル (.dump) から ApsaraDB RDS for PostgreSQL インスタンスまたはオンプレミスの PostgreSQL データベースにデータを復元する方法について説明します。
-
データ量が少ない場合 (単一テーブルのデータなど) は、論理バックアップを使用して迅速に回復できます。 データ量が多い場合は、フル物理バックアップから新しいインスタンスにデータを復元し、Data Transmission Service (DTS) を使用して元のインスタンスにデータを移行することを推奨します。
-
データ回復方法の詳細については、「データ回復」をご参照ください。
前提条件
PostgreSQL データの論理バックアップが作成されていること。
注意事項
-
データを復元する際、デフォルトの
postgresデータベースには接続しないでください。 -
特定のテーブルを復元しても、そのテーブルが依存する他のデータベースオブジェクトは復元されません。 そのため、クリーンなデータベースに復元する場合、操作が成功しないことがあります。
データベースの復元
-
バックアップデータが保存されている ECS インスタンスまたはオンプレミスホストにログインし、次のコマンドを実行してデータベースを復元します。
pg_restore -h '<hostname>' -U <username> -p <port> -d <dbname> -c <dumpdir>パラメーター
説明
hostname
ApsaraDB RDS for PostgreSQL インスタンスのエンドポイント。
説明-
ECS インスタンスから内部エンドポイントを使用して接続するには、ECS インスタンスと ApsaraDB RDS for PostgreSQL インスタンスが同じネットワークタイプを使用していることを確認してください。 両方のインスタンスが VPC 内にある場合は、同じ VPC 内に存在する必要があります。
-
オンプレミスホストまたは ECS インスタンスからパブリックエンドポイントを使用して接続するには、インスタンスのパブリックエンドポイントが有効になっていることを確認してください。
username
ApsaraDB RDS for PostgreSQL インスタンスの特権アカウントのユーザー名。
port
ApsaraDB RDS for PostgreSQL インスタンスのポート番号。
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 -
-
「
Password:」と表示されたら、インスタンスの特権アカウントのパスワードを入力して Enter キーを押します。[root@iZbpxxx ~]# pg_restore -h 'pgm-xxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht02 -c /tmp/testdb.dump Password: [root@iZbpxxx ~]#説明組み込みの plpgsql 拡張に関する警告は無視できます。
特定のテーブルの復元
-
バックアップデータが保存されている ECS インスタンスまたはオンプレミスホストにログインし、次のコマンドを実行して特定のテーブルを復元します。
pg_restore -h '<hostname>' -U <username> -p <port> -d <dbname> -t <table> -c <dumpdir>パラメーター
説明
hostname
ApsaraDB RDS for PostgreSQL インスタンスのエンドポイント。
説明-
ECS インスタンスから内部エンドポイントを使用して接続するには、ECS インスタンスと ApsaraDB RDS for PostgreSQL インスタンスが同じネットワークタイプを使用していることを確認してください。 両方のインスタンスが VPC 内にある場合は、同じ VPC 内に存在する必要があります。
-
オンプレミスホストまたは ECS インスタンスからパブリックエンドポイントを使用して接続するには、インスタンスのパブリックエンドポイントが有効になっていることを確認してください。
username
ApsaraDB RDS for PostgreSQL インスタンスの特権アカウントのユーザー名。
port
ApsaraDB RDS for PostgreSQL インスタンスのポート番号。
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 -
-
「
Password:」と表示されたら、インスタンスの特権アカウントのパスワードを入力して Enter キーを押します。[root@iZbpxxx ~]# pg_restore -h 'pgm-bpxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht01 -t zhttest0808 -c /tmp/testdb2.dump パスワード: [root@iZbpxxx ~]#
データベーススキーマのみの復元
-
バックアップデータが保存されている ECS インスタンスまたはオンプレミスホストにログインし、次のコマンドを実行してデータベーススキーマのみを復元します。
pg_restore -h '<hostname>' -U <username> -p <port> -d <dbname> -s <dumpdir>パラメーター
説明
hostname
ApsaraDB RDS for PostgreSQL インスタンスのエンドポイント。
説明-
ECS インスタンスから内部エンドポイントを使用して接続するには、ECS インスタンスと ApsaraDB RDS for PostgreSQL インスタンスが同じネットワークタイプを使用していることを確認してください。 両方のインスタンスが VPC 内にある場合は、同じ VPC 内に存在する必要があります。
-
オンプレミスホストまたは ECS インスタンスからパブリックエンドポイントを使用して接続するには、インスタンスのパブリックエンドポイントが有効になっていることを確認してください。
username
ApsaraDB RDS for PostgreSQL インスタンスの特権アカウントのユーザー名。
port
ApsaraDB RDS for PostgreSQL インスタンスのポート番号。
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 -
-
「
Password:」と表示されたら、インスタンスの特権アカウントのパスワードを入力して Enter キーを押します。[root@iZbpxxx ~]# pg_restore -h 'pgm-bpxxx.pg.rds.aliyuncs.com' -U zht -p 5432 -d zht03 -s /tmp/testdb2.dump Password: [root@iZbpxxx ~]#説明組み込みの plpgsql 拡張に関する警告は無視できます。