Amazon EC2 インスタンスから PostgreSQL データベースをインポートする - Amazon Relational Database Service

Amazon EC2 インスタンスから PostgreSQL データベースをインポートする

Amazon EC2 インスタンス上の PostgreSQL サーバーにデータがあり、そのデータを PostgreSQL DB インスタンスに移動する場合は、以下のプロセスを使用できます。このプロセスは以下のステップで構成されます。この後のセクションで、各ステップについて詳しく説明します。

  1. pg_dump を使用して、ロードするデータを格納したファイルを作成する

  2. ターゲット DB インスタンスを作成する

  3. psql を使用して、DB インスタンスにデータベースを作成し、データをロードする

  4. DB インスタンスの DB スナップショットを作成する

ステップ 1: ロードするデータが含まれている pg_dump を使用してファイルを作成する

pg_dump ユーティリティでは、COPY コマンドを使用して、PostgreSQL データベースのスキーマとデータダンプを作成します。pg_dump によって生成されるダンプスクリプトは、同じ名前のデータベースにデータをロードし、テーブル、インデックス、外部キーを再作成します。pg_restore コマンドと -d パラメータを使用して、データを別の名前でデータベースに復元できます。

データダンプの作成前に、ダンプするテーブルに対してクエリを実行して行数を取得し、ターゲット DB インスタンスでその行数を確認できるようにする必要があります。

以下のコマンドでは、mydb2 というデータベース用に mydb2dump.sql というダンプファイルを作成しています。

prompt>pg_dump dbname=mydb2 -f mydb2dump.sql

ステップ 2: ターゲット DB インスタンスを作成する

Amazon RDS コンソール、AWS CLI、または API のいずれかを使用して、ターゲット PostgreSQL DB インスタンスを作成します。バックアップの保持設定を 0 にし、マルチ AZ を無効にして、インスタンスを作成します。これにより、データのインポートが高速化されます。データをダンプする前に、インスタンスにデータベースを作成する必要があります。データベースは、ダンプしたデータが含まれていたデータベースと同じ名前で作成できます。または、別の名前でデータベースを作成できます。この場合は、pg_restore コマンドと -d パラメータを使用して、新しい名前のデータベース内にデータを復元します。

例えば、データベースのダンプ、復元、名前変更に以下のコマンドを使用できます。

pg_dump -Fc -v -h [endpoint of instance] -U [master username] [database] > [database].dump createdb [new database name] pg_restore -v -h [endpoint of instance] -U [master username] -d [new database name] [database].dump

ステップ 3: psql を使用して DB インスタンスにデータベースを作成し、データをロードする

pg_dump コマンドの実行に使用した同じ接続を使用して、ターゲット DB インスタンスに接続し、データベースを再作成できます。psql により、マスターユーザー名とマスターパスワードを使用して DB インスタンスにデータベースを作成できます。

以下の例では、psql と、mydb2dump.sql という名前のダンプファイルを使用して、mypginstance という PostgreSQL DB インスタンスに mydb2 というデータベースを作成しています。

Linux、macOS、Unix の場合:

psql \ -f mydb2dump.sql \ --host mypginstance.555555555555.aws-region.rds.amazonaws.com \ --port 8199 \ --username myawsuser \ --password password \ --dbname mydb2

Windows の場合:

psql ^ -f mydb2dump.sql ^ --host mypginstance.555555555555.aws-region.rds.amazonaws.com ^ --port 8199 ^ --username myawsuser ^ --password password ^ --dbname mydb2
注記

セキュリティ上のベストプラクティスとして、ここに示されているプロンプト以外のパスワードを指定してください。

ステップ 4: DB インスタンスの DB スナップショットを作成する

データが DB インスタンスにロードされたことを確認したら、ターゲット PostgreSQL DB インスタンスの DB スナップショットを作成することをお勧めします。DB スナップショットは DB インスタンスの完全なバックアップであり、DB インスタンスを既知の状態に復元するために使用できます。ロード直後に DB スナップショットを作成しておくと、何らかの事故のときにそのスナップショットを使用すれば、データを再ロードせずに済みます。また、そのスナップショットを使用して、新しい DB インスタンスをシードすることもできます。DB スナップショットの作成については、「シングル AZ DB インスタンスの DB スナップショットの作成」を参照してください。