restore-db-cluster-to-point-in-time を実行したらクラスターだけが作成され、DB インスタンスがいつまでも起動しない場合の対処方法
困っていたこと
restore-db-cluster-to-point-in-time を実行したらクラスターだけが作成され、インスタンスがいつまでも起動しません。
なぜこのような現象が起きるのでしょうか。
どう対応すればいいの?
マネジメントコンソール上からクラスター DB のクローンを作成する場合、restore-db-cluster-to-point-in-time と create-db-instance が同時に実行されるため、クラスターと DB インスタンスが同時に作成されます。
しかし、CLI でクローンを作成する場合は、restore-db-cluster-to-point-in-time と create-db-instance をそれぞれ実行する必要があります。
以下は、公式ドキュメントの引用です。
AWS CLI を使用して Aurora DB クラスターのクローンを作成するには、いくつかのステップが必要です。
restore-db-cluster-to-point-in-time AWS CLI コマンドを使用すると、Aurora DB インスタンスの個数が 0 の空の Aurora DB クラスターができます。つまり、このコマンドは Aurora DB クラスターのみを復元し、クラスターの DB インスタンスは復元しません。これは、クローンが使用可能になった後に別途行います。プロセスは 2 ステップで、次のとおりです。
1. restore-db-cluster-to-point-in-time CLI コマンドを使用して、クローンを作成します。このコマンドで使用するパラメータで、作成する空の Aurora DB クラスター (クローン) の容量タイプなどの詳細が制御されます。
2. create-db-instance CLI コマンドを使用して、クローン用の Aurora DB インスタンスを作成し、復元された Aurora DB クラスターに Aurora DB インスタンスを再作成します。
同じドキュメントに、以下の通り tpch100g という名前のクラスターのクローンを作成するコマンド例が記載されています。
次の Linux でクローンを作成する例では、tpch100g-clone という名前のクローンクラスターと、新しいクラスター用の tpch100g-clone-instance という名前のプライマリインスタンスを作成します。 使用する DB エンジンについては指定が必要なため、この例では、describe-db-clusters を使用して --engine パラメータに使用する適切な値を取得しています。
$ aws rds restore-db-cluster-to-point-in-time \
--source-db-cluster-identifier tpch100g \
--db-cluster-identifier tpch100g-clone \
--restore-type copy-on-write \
--use-latest-restorable-time
$ aws rds describe-db-clusters \
--db-cluster-identifier tpch100g-clone \
--query '*[].[Engine]' \
--output text
$ aws rds create-db-instance \
--db-instance-identifier tpch100g-clone-instance \
--db-cluster-identifier tpch100g-clone \
--db-instance-class db.r5.4xlarge \
--engine aurora