RDS for PostgreSQL DB インスタンスの スナップショットを Aurora PostgreSQL DB クラスターに移行する - Amazon Aurora

RDS for PostgreSQL DB インスタンスの スナップショットを Aurora PostgreSQL DB クラスターに移行する

RDS for PostgreSQL DB インスタンスの DB スナップショットを移行して、Aurora PostgreSQL DB クラスターを作成することができます。作成された Aurora PostgreSQL DB クラスターには、元の RDS for PostgreSQL DB インスタンスのデータが格納されます。DB スナップショットの作成については、「DB スナップショットの作成」を参照してください。

場合によっては、DB スナップショットが、データを配置したい AWS リージョン にない可能性があります。その場合は、Amazon RDS コンソールを使用して、DB スナップショットを対象の AWS リージョン にコピーします。DB スナップショットのコピーについては、「DB スナップショットのコピー」を参照してください。

対象の AWS リージョン で利用可能な Aurora PostgreSQL バージョンと互換性のある、RDS for PostgreSQL スナップショットを移行できます。例えば、RDS for PostgreSQL 11.1 DB インスタンスからのスナップショットは、米国西部 (北カリフォルニア) リージョンで、Aurora PostgreSQL のバージョン 11.4、11.7、11.8、または 11.9 に移行できます。RDS PostgreSQL 10.11 スナップショットは、Aurora PostgreSQL 10.11、10.12、10.13、および 10.14 に移行できます。つまり、RDS for PostgreSQL スナップショットは、Aurora PostgreSQL と同じかそれ以下のマイナーバージョンを使用する必要があります。

また、新しい Aurora PostgreSQL DB クラスターが、AWS KMS key を使用して、保管中に暗号化されるよう設定することもできます。このオプションは、暗号化されていない DB スナップショットに対してのみ使用できます。

RDS for PostgreSQL DB スナップショットを Aurora PostgreSQL DB クラスターに移行するには、AWS Management Console、AWS CLI、または RDS API を使用できます。AWS Management Console を使用すると、DB クラスターとプライマリインスタンスの両方を作成するために必要なアクションがコンソールによって実行されます。

RDS コンソールを使用して PostgreSQL DB スナップショットを移行するには
  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. [Snapshots] を選択します。

  3. [スナップショット] ページで、Aurora PostgreSQL DB クラスターに移行する RDS for PostgreSQL スナップショットを選択します。

  4. [アクション]、[スナップショットの移行] の順に選択します。

  5. [データベースの移行] ページで以下の値を設定します。

    • [DB エンジンバージョン]: 移行した新しいインスタンスに使用する DB エンジンのバージョンを選択します。

    • [DB instance identifier] (DB インスタンス識別子): DB クラスター名を入力します。これは、選択した AWS リージョン 内で自分のアカウントに対して一意である必要があります。この識別子は、DB クラスター内のインスタンスのエンドポイントアドレスで使用されます。分かりやすくするために、選択した AWS リージョン と DB エンジンなど (例: aurora-cluster1) を名前に含めます。

      DB インスタンス識別子には次の制約があります。

      • 1~63 文字の英数字またはハイフンを使用する必要があります。

      • 1 字目は文字である必要があります。

      • 文字列の最後にハイフンを使用したり、ハイフンを 2 つ続けて使用したりすることはできません。

      • 1 つの AWS アカウント、1 つの AWS リージョン につき、すべての DB インスタンスにおいて一意である必要があります。

    • [DB インスタンスクラス]: データベースに必要なストレージと容量のある DB インスタンスクラス (db.r6g.large など) を選択します。Aurora クラスターボリュームは、データベースのデータ量が増えるにつれて自動的に増加します。そのため、現在のストレージ要件を満たしている DB インスタンスクラスを選択する必要があります。詳細については、「Amazon Aurora ストレージの概要」を参照してください。

    • [Virtual Private Cloud (VPC)]: 既存の VPC がある場合は、その VPC 識別子 (vpc-a464d1c1 など) を選択することで、その VPC を Aurora PostgreSQL DB クラスターで使用できます。VPC の作成方法の詳細については、「チュートリアル: DB クラスターで使用する VPC を作成する (IPv4 専用)」を参照してください。

      それ以外の場合は、[新しい VPC の作成] を選択することにより、Amazon RDS で VPC を作成できます。

    • DB サブネットグループ: 既存のサブネットグループがある場合は、そのサブネットグループ識別子 (gs-subnet-group1 など) を選択して、サブネットグループを Aurora PostgreSQL DB クラスターで使用できます。

    • [パブリックアクセス]: DB クラスターのインスタンスが VPC 内のリソースからのみアクセスできることを指定するには、[いいえ] を選択します。DB クラスターのインスタンスがパブリックネットワーク上のリソースからアクセスできることを指定するには、[はい] を選択します。

      注記

      本番稼働用の DB クラスターは、お客様のアプリケーションサーバーのみがアクセスするため、パブリックサブネット内に配置する必要がない場合があります。DB クラスターをパブリックサブネットに配置する必要がない場合は、[パブリックアクセス可能] を [いいえ] に設定します。

    • [VPC セキュリティグループ]: データベースへのアクセスを許可する VPC セキュリティグループを選択します。

    • [アベイラビリティーゾーン]: Aurora PostgreSQL DB クラスターのプライマリインスタンスをホストするアベイラビリティーゾーンを選択します。Amazon RDS でアベイラビリティーゾーンが選択されるようにするには、[指定なし] を選択します。

    • [データベースのポート]: Aurora PostgreSQL DB クラスターのインスタンスへの接続に使用されるデフォルトのポートを入力します。デフォルト: 5432

      注記

      会社のファイアウォールでデフォルトポート (PostgreSQL のデフォルトポート 5432 など) へのアクセスが許可されない場合があります。この場合は、会社のファイアウォールによって許可されるポート値を指定します。そのポート値を覚えておいてください。後で Aurora PostgreSQL DB クラスターに接続するときに使用します。

    • [暗号を有効化]: 新しい Aurora PostgreSQL DB クラスターを保管時に暗号化するには、[暗号を有効化] を選択します。また、AWS KMS key 値としてKMS キーを選択します。

    • [マイナーバージョン自動アップグレード]: PostgreSQL DB エンジンのマイナーバージョンアップグレードを、そのリリースと同時に Aurora PostgreSQL DB クラスターに自動的に適用するには、[マイナーバージョン自動アップグレードを有効にする] を選択します。

      [マイナーバージョン自動アップグレード] オプションは、Aurora PostgreSQL DB クラスターの PostgreSQL マイナーエンジンバージョンに対するアップグレードのみに適用されます。システム安定性を維持するために適用される定期的なパッチは適用されません。

  6. [Migrate] を選択して、DB スナップショットを移行します。

  7. [データベース] を選択して新しい DB クラスターを表示します。移行の進行状況を監視する新しい DB クラスターを選択します。移行が完了すると、クラスターのステータスは [Available] (使用可能) になります。[接続とセキュリティ] タブで、DB クラスターのプライマリライターインスタンスへの接続に使用するクラスターエンドポイントを見つけます。Aurora PostgreSQL DB クラスターとの接続の詳細については、「Amazon Aurora DB クラスターへの接続」を参照してください。

AWS CLI を使用して RDS for PostgreSQL DB スナップショットを Aurora PostgreSQL に移行するには、2 つの別々の AWS CLI コマンドを使用します。まず、AWS CLI コマンド restore-db-cluster-from-snapshot で新しい Aurora PostgreSQL DB クラスターを作成します。次に、create-db-instance コマンドを使用して、新しいクラスターにプライマリ DB インスタンスを作成し、移行を完了します。次の手順では、スナップショットの作成に使用した DB インスタンスと同じ構成のプライマリ DB インスタンスで Aurora PostgreSQL DB クラスターを作成します。

RDS for PostgreSQL DB スナップショットを Aurora PostgreSQL DB クラスターに移行するには
  1. describe-db-snapshots コマンドを使用して、移行する DB スナップショットに関する情報を取得します。コマンドで --db-instance-identifier パラメータまたは --db-snapshot-identifier を指定できます。これらのパラメータのいずれかを指定しないと、すべてのスナップショットを取得することになります。

    aws rds describe-db-snapshots --db-instance-identifier <your-db-instance-name>
  2. このコマンドは、指定した DB インスタンスから作成されたスナップショットの設定の詳細をすべて返します。出力から移行するスナップショットを見つけ、その Amazon リソースネーム (ARN) を見つけます。Amazon RDS ARN の詳細については、「Amazon Relational Database Service (Amazon RDS)」を参照してください。ARN は次の出力例のようになります。

    “DBSnapshotArn": "arn:aws:rds:aws-region:111122223333:snapshot:<snapshot_name>"

    また、出力では、エンジンのバージョン、割り当てられたストレージ、DB インスタンスが暗号化されているかどうかなど、RDS for PostgreSQL DB インスタンスの設定の詳細を確認できます。

  3. restore-db-cluster-from-snapshot コマンドを使用して、移行を開始します。以下のパラメータを指定します。

    • --db-cluster-identifier – Aurora PostgreSQL DB クラスターに割り当てる名前。この Aurora DB クラスターは、DB スナップショット移行のターゲットです。

    • --snapshot-identifier – 移行する DB スナップショットの Amazon リソースネーム (ARN)。

    • --engine – Aurora DB クラスターエンジンの aurora-postgresql を指定します。

    • --kms-key-id – このオプションパラメータを使用すると、暗号化されていない DB スナップショットから暗号化された Aurora PostgreSQL DB クラスターを作成できます。また、DB スナップショットに使用されたキーとは異なる暗号化キーを DB クラスター用に選択することもできます。

      注記

      暗号化された DB スナップショットから暗号化されていない Aurora PostgreSQL DB クラスターを作成することはできません。

    --kms-key-id パラメータを以下に示すように指定しないと、restore-db-cluster-from-snapshot AWS CLI コマンドは、DB スナップショットと同じキーを使用して暗号化されているか、ソース DB スナップショットが暗号化されていない場合は暗号化されていない空の Aurora PostgreSQL DB クラスターを作成します。

    Linux、macOS、Unix の場合:

    aws rds restore-db-cluster-from-snapshot \ --db-cluster-identifier cluster-name \ --snapshot-identifier arn:aws:rds:aws-region:111122223333:snapshot:your-snapshot-name \ --engine aurora-postgresql

    Windows の場合:

    aws rds restore-db-cluster-from-snapshot ^ --db-cluster-identifier new_cluster ^ --snapshot-identifier arn:aws:rds:aws-region:111122223333:snapshot:your-snapshot-name ^ --engine aurora-postgresql
  4. このコマンドは、移行用に作成されている Aurora PostgreSQL DB クラスターの詳細を返します。Aurora PostgreSQL DB クラスターのステータスは、describe-db-clusters AWS CLI コマンドで確認できます。

    aws rds describe-db-clusters --db-cluster-identifier cluster-name
  5. DB クラスターが「使用可能」になったら、create-db-instance コマンドを使用して、Amazon RDS DB スナップショットに基づいて、Aurora PostgreSQL DB クラスターに DB インスタンスを入力します。以下のパラメータを指定します。

    • --db-cluster-identifier – 前のステップで作成した新しい Aurora PostgreSQL DB クラスターの名前。

    • --db-instance-identifier – DB インスタンスに付ける名前。このインスタンスは、Aurora PostgreSQL DB クラスターのプライマリノードになります。

    • ----db-instance-class – 使用する DB インスタンスクラスを指定します。移行先の Aurora PostgreSQL バージョンでサポートされている DB インスタンスクラスの中から選択します。詳細については、DB インスタンスクラスタイプおよびDB インスタンスクラスでサポートされている DB エンジンを参照してください。

    • --engine – DB インスタンスに aurora-postgresql を指定します。

    create-db-instance AWS CLI コマンドで適切なオプションを渡すことで、ソース DB スナップショットとは異なる設定で DB インスタンスを作成することもできます。詳細については、「create-db-instance」コマンドを参照してください。

    Linux、macOS、Unix の場合:

    aws rds create-db-instance \ --db-cluster-identifier cluster-name \ --db-instance-identifier --db-instance-class db.instance.class \ --engine aurora-postgresql

    Windows の場合:

    aws rds create-db-instance ^ --db-cluster-identifier cluster-name ^ --db-instance-identifier --db-instance-class db.instance.class ^ --engine aurora-postgresql

移行プロセスが完了すると、Aurora PostgreSQL クラスターでは、プライマリ DB インスタンスが設定されます。