Amazon EC2 インスタンスから PostgreSQL データベースをインポートする
Amazon EC2 インスタンス上の PostgreSQL サーバーにデータがあり、そのデータを PostgreSQL DB インスタンスに移動する場合は、次のプロセスに従ってデータを移行できます。
-
pg_dump を使用して、ロードするデータを格納したファイルを作成する
-
ターゲット DB インスタンスを作成する
-
psql を使用して、DB インスタンスにデータベースを作成し、データをロードする
-
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
\ --hostmypginstance.555555555555
.aws-region
.rds.amazonaws.com \ --port8199
\ --usernamemyawsuser
\ --passwordpassword
\ --dbnamemydb2
Windows の場合:
psql ^ -f
mydb2dump.sql
^ --hostmypginstance.555555555555
.aws-region
.rds.amazonaws.com ^ --port8199
^ --usernamemyawsuser
^ --passwordpassword
^ --dbnamemydb2
注記
セキュリティ上のベストプラクティスとして、ここに示されているプロンプト以外のパスワードを指定してください。
ステップ 4: DB インスタンスの DB スナップショットを作成する
データが DB インスタンスにロードされたことを確認したら、ターゲット PostgreSQL DB インスタンスの DB スナップショットを作成することをお勧めします。DB スナップショットは DB インスタンスの完全なバックアップであり、DB インスタンスを既知の状態に復元するために使用できます。ロード直後に DB スナップショットを作成しておくと、何らかの事故のときにそのスナップショットを使用すれば、データを再ロードせずに済みます。また、そのスナップショットを使用して、新しい DB インスタンスをシードすることもできます。DB スナップショットの作成については、「Amazon RDS のシングル AZ DB インスタンスの DB スナップショットの作成」を参照してください。