Aurora DB クラスターと DB インスタンスの削除 - Amazon Aurora

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

Aurora DB クラスターと DB インスタンスの削除

Aurora DB クラスターは、不要になったときに削除できます。これにより、すべてのデータとともにクラスターボリュームが削除されます。クラスターを削除する前に、データをスナップショットとして保存できます。後でスナップショットを復元することで、削除したクラスターと同じデータを含む、新しいクラスターを作成できます。

クラスター自体と、そのクラスターのデータは保持しながら、クラスターから DB インスタンスのみを削除することもできます。これにより、クラスターがビジー状態ではなく、また複数の DB インスタンスのためにコンピューティングキャパシティーを必要としていない場合の料金を削減できます。

Aurora DB クラスターの削除

Aurora には、DB クラスターを削除するための、単一的な手順によるメソッドは用意されていません。設計上のこの選択は、誤ってデータを喪失したり、アプリケーションをオフラインにしたりするのを防ぐことを目的としています。Aurora アプリケーションは通常、ミッション・クリティカルであり、高い可用性を必要とします。したがって Auroraでは、DB インスタンスの追加と削除により、クラスターの容量を簡単に拡張および縮小できるようにしています。しかし、クラスター自体を削除する際は、別の選択が必要となります。

クラスターからすべての DB インスタンスを削除してから、クラスター自体を削除する場合は、次の一般的な手順に従います。

  1. クラスター内のリーダーインスタンスをすべて削除します。Aurora DB クラスターからの DB インスタンスの削除 にある手順を実行します。クラスターにリーダーインスタンスがある場合、いずれかのインスタンスを削除することで、クラスターのコンピューティングキャパシティーを直接減少させられます。最初にリーダーインスタンスを削除すると、プロシージャ全体でクラスターが使用可能なまま、不要なフェールオーバー操作は実行されなくなります。

  2. クラスターからライターインスタンスを削除します。再度、Aurora DB クラスターからの DB インスタンスの削除 の手順を使用します。

    AWS マネジメントコンソール を使用している場合は、これが最後のステップとなります。コンソールを使用して DB クラスター内の最後の DB インスタンスを削除すると、DB クラスターとクラスターボリューム内のデータが自動的に削除されます。この時点でクラスターを削除する前に、Aurora により、スナップショットを作成するオプションの選択が求められます。また Aurora は、クラスターを削除することの確認も求めてきます。

  3. CLI および API のみ: AWS CLI または RDS API を使用して DB インスタンスを削除した場合、すべての DB インスタンスを削除した後も、クラスターとそれに関連付けられたクラスターボリュームはそのまま残ります。クラスター自体を削除するには、クラスターに DB インスタンスが 1 つも関連付けられていないときに、delete-db-cluster CLI コマンドまたは DeleteDBCluster API オペレーションを呼び出します。この時点で、クラスターボリュームのスナップショットを作成するかどうかを選択します。そうすることで、後で必要になる可能性があるクラスターのデータを保存できます。

空の Aurora クラスターの作成

AWS マネジメントコンソール を使用している場合、クラスター内の最後の DB インスタンスを削除すると、そのクラスターが Aurora によって自動的に削除されます。したがって、空のクラスターを削除する手順は、AWS CLI または RDS API を使用する場合にのみ適用されます。

ヒント

クラスターを DB インスタンスがない状態で維持すると、クラスターの CPU 料金を発生させずにデータを保持できます。クラスターに 1 つ以上の新しい DB インスタンスを作成することで、クラスターの使用をすぐに再開できます。関連付けられた DB インスタンスがない場合でも、クラスターに対しては Aurora 固有の管理操作を実行できます。ただ、データにアクセスしたり、DB インスタンスへの接続を必要とするオペレーションを実行したりすることはできません。

AWS CLI を使用して空の Aurora DB クラスターを削除するには、delete-db-cluster コマンドを呼び出します。

Amazon RDS API を使用して空の Aurora DB クラスターを削除するには、DeleteDBInstance オペレーションを呼び出します。

空のクラスター deleteme-zero-instances は、開発およびテストにのみ使用されるもので、重要なデータを保持していないと想定できます。この場合、クラスターを削除する際に、クラスターボリュームのスナップショットを保存しておく必要はありません。次に、クラスターが DB インスタンスを含んでおらず、また最終的なスナップショットも作成せずに、この空のクラスターを削除する場合の例を示します。

$ aws rds describe-db-clusters --db-cluster-id deleteme-zero-instances --output text \ --query '*[].["Cluster:",DBClusterIdentifier,DBClusterMembers[*].["Instance:",DBInstanceIdentifier,IsClusterWriter]] Cluster: deleteme-zero-instances $ aws rds delete-db-cluster --db-cluster-id deleteme-zero-instances --skip-final-snapshot { "DBClusterIdentifier": "deleteme-zero-instances", "Status": "available", "Engine": "aurora-mysql" }

単一の DB インスタンスを使用している Aurora クラスターの削除

Aurora クラスターの最後の DB インスタンスを削除する場合、使用する方法に応じて動作が異なります。最後の DB インスタンスは、AWS マネジメントコンソール を使用して削除できます。そうすると、DB クラスターも削除されます。DB クラスターで削除保護が有効になっている場合でも、AWS CLI または API を使用して最後の DB インスタンスを削除できます。この場合、DB クラスター自体は存続し、データは保持されます。クラスターに新しい DB インスタンスをアタッチすることで、再度データにアクセスできます。

次に、クラスターにまだ DB インスタンスが関連付けられているために、delete-db-cluster コマンドが機能しない場合の例を示します。このクラスターには、ライター DB インスタンスが 1 つあります。クラスター内の DB インスタンスを確認するには、各インスタンスの IsClusterWriter 属性をチェックします。クラスターには、0 個または 1 個のライター DB インスタンスを保持することができます。値が true であれば、それがライター DB インスタンスであることを意味します。値が false であれば、それがリーダー DB インスタンスであることを意味します。リーダー DB インスタンスの場合は、0 もしくは 1 個以上の複数を、クラスターで保持できます。この場合、delete-db-instance コマンドを使用してライター DB インスタンスを削除します。DB インスタンスが deleting 状態になれば、その時点でクラスターも削除できます。この例では、クラスターに保持する価値のあるデータが含まれていないため、クラスターボリュームのスナップショットを作成しないとします。

$ aws rds delete-db-cluster --db-cluster-id deleteme-writer-only --skip-final-snapshot An error occurred (InvalidDBClusterStateFault) when calling the DeleteDBCluster operation: Cluster cannot be deleted, it still contains DB instances in non-deleting state. $ aws rds describe-db-clusters --db-cluster-id deleteme-writer-only \ --query '*[].[DBClusterIdentifier,Status,DBClusterMembers[*].[DBInstanceIdentifier,IsClusterWriter]]' [ [ "deleteme-writer-only", "available", [ [ "instance-2130", true ] ] ] ] $ aws rds delete-db-instance --db-instance-id instance-2130 { "DBInstanceIdentifier": "instance-2130", "DBInstanceStatus": "deleting", "Engine": "aurora-mysql" } $ aws rds delete-db-cluster --db-cluster-id deleteme-writer-only --skip-final-snapshot { "DBClusterIdentifier": "deleteme-writer-only", "Status": "available", "Engine": "aurora-mysql" }

複数の DB インスタンスを持つ Aurora クラスターの削除

クラスターに含まれる DB インスタンスが複数ある場合、それらは通常、1 つのライターインスタンスと 1 つ以上のリーダーインスタンスで構成されます。リーダーインスタンスは、ライターインスタンスで問題が発生した場合にそれを引き継ぐためにスタンバイ状態を取ることで、高可用性を支援しています。また、リーダーインスタンスを使用して、ライターインスタンスにオーバーヘッドを追加することなく、読み込み回数が多いワークロードを処理するようにクラスターをスケールアップすることもできます。

複数のリーダー DB インスタンスを保持するクラスターを削除するには、まずリーダーインスタンスを削除した上で、ライターインスタンスを削除します。AWS マネジメントコンソール を使用している場合には、ライターインスタンスを削除した後に、クラスターも自動的に削除されます。AWS CLI または RDS API を使用している場合は、ライターインスタンスを削除しても、クラスターとそのデータは所定の位置に残ります。この場合は、個別のコマンドまたは API オペレーションによりクラスターを削除します。

次の例では、ライター DB インスタンスに加え、1 つのリーダー DB インスタンスを含むクラスターを削除する方法を示します。describe-db-clusters の出力により、instance-7384 がライターインスタンスであり、instance-1039 リーダーインスタンスであることが確認できます。この例のような場合、リーダーインスタンスがまだ存在している間にライターインスタンスを削除すると、フェールオーバー操作が発生するため、リーダーインスタンスを最初に削除します。そのインスタンス自体も削除する予定がある場合は、リーダーインスタンスをライターに昇格させても意味がありません。ここでは、これらの db.t2.small インスタンスは開発とテストにのみ使用されるものだと想定しており、削除操作では最終的なスナップショットの作成がスキップされるということを再確認しておきます。

$ aws rds delete-db-cluster --db-cluster-id deleteme-writer-and-reader --skip-final-snapshot An error occurred (InvalidDBClusterStateFault) when calling the DeleteDBCluster operation: Cluster cannot be deleted, it still contains DB instances in non-deleting state. $ aws rds describe-db-clusters --db-cluster-id deleteme-writer-and-reader --output text \ --query '*[].["Cluster:",DBClusterIdentifier,DBClusterMembers[*].["Instance:",DBInstanceIdentifier,IsClusterWriter]] Cluster: deleteme-writer-and-reader Instance: instance-1039 False Instance: instance-7384 True $ aws rds delete-db-instance --db-instance-id instance-1039 { "DBInstanceIdentifier": "instance-1039", "DBInstanceStatus": "deleting", "Engine": "aurora-mysql" } $ aws rds delete-db-instance --db-instance-id instance-7384 { "DBInstanceIdentifier": "instance-7384", "DBInstanceStatus": "deleting", "Engine": "aurora-mysql" } $ aws rds delete-db-cluster --db-cluster-id deleteme-writer-and-reader --skip-final-snapshot { "DBClusterIdentifier": "deleteme-writer-and-reader", "Status": "available", "Engine": "aurora-mysql" }

次の例は、ライター DB インスタンスと複数のリーダー DB インスタンスを含む DB クラスターを削除する方法を示しています。ここでは、describe-db-clusters コマンドからの簡潔な出力を使用して、ライターとリーダーインスタンスそれぞれに関するレポートを取得します。繰り返しますが、ライター DB インスタンスを削除する前に、すべてのリーダー DB インスタンスを削除する必要があります。リーダー DB インスタンスを削除する順序は任意です。複数の DB インスタンスを持つこのクラスターには、保存する価値のあるデータが含まれていると考えられます。したがって、作成するスナップショットの詳細を設定するために、この例の delete-db-cluster コマンドには --no-skip-final-snapshot パラメータと --final-db-snapshot-identifier パラメータが含まれています。

$ aws rds describe-db-clusters --db-cluster-id deleteme-multiple-readers --output text \ --query '*[].["Cluster:",DBClusterIdentifier,DBClusterMembers[*].["Instance:",DBInstanceIdentifier,IsClusterWriter]] Cluster: deleteme-multiple-readers Instance: instance-1010 False Instance: instance-5410 False Instance: instance-9948 False Instance: instance-8451 True $ aws rds delete-db-instance --db-instance-id instance-1010 { "DBInstanceIdentifier": "instance-1010", "DBInstanceStatus": "deleting", "Engine": "aurora-mysql" } $ aws rds delete-db-instance --db-instance-id instance-5410 { "DBInstanceIdentifier": "instance-5410", "DBInstanceStatus": "deleting", "Engine": "aurora-mysql" } $ aws rds delete-db-instance --db-instance-id instance-9948 { "DBInstanceIdentifier": "instance-9948", "DBInstanceStatus": "deleting", "Engine": "aurora-mysql" } $ aws rds delete-db-instance --db-instance-id instance-8451 { "DBInstanceIdentifier": "instance-8451", "DBInstanceStatus": "deleting", "Engine": "aurora-mysql" } $ aws rds delete-db-cluster --db-cluster-id deleteme-multiple-readers --no-skip-final-snapshot \ --final-db-snapshot-identifier deleteme-multiple-readers-snapshot-11-7087 { "DBClusterIdentifier": "deleteme-multiple-readers", "Status": "available", "Engine": "aurora-mysql" }

次に、要求されたスナップショットが Aurora により作成されたことを、確認する方法の例を示します。deleteme-multiple-readers-snapshot-11-7087 識別子を指定することで、特定のスナップショットの詳細を要求できます。deleteme-multiple-readers クラスター識別子を指定することで、削除されたクラスターのすべてのスナップショットのレポートを取得することもできます。これらのコマンドはどちらも、同じスナップショットに関する情報を返しています。

$ aws rds describe-db-cluster-snapshots --db-cluster-snapshot-identifier deleteme-multiple-readers-snapshot-11-7087 { "DBClusterSnapshots": [ { "AvailabilityZones": [], "DBClusterSnapshotIdentifier": "deleteme-multiple-readers-snapshot-11-7087", "DBClusterIdentifier": "deleteme-multiple-readers", "SnapshotCreateTime": "11T01:40:07.354000+00:00", "Engine": "aurora-mysql", ... $ aws rds describe-db-cluster-snapshots --db-cluster-identifier deleteme-multiple-readers { "DBClusterSnapshots": [ { "AvailabilityZones": [], "DBClusterSnapshotIdentifier": "deleteme-multiple-readers-snapshot-11-7087", "DBClusterIdentifier": "deleteme-multiple-readers", "SnapshotCreateTime": "11T01:40:07.354000+00:00", "Engine": "aurora-mysql", ...

Aurora クラスターの削除保護

削除保護が有効になっているクラスターは削除できません。そのクラスター内の DB インスタンスは削除が可能ですが、クラスター自体は削除できません。これにより、クラスターボリュームとともに、誤ってすべてのデータが削除されるのを防ぐことができます。Aurora では、クラスターの削除を試みる際に、コンソール、AWS CLI、または RDS API のどれが使用されたかに関係なく、DB クラスターには削除保護が適用されます。

AWS マネジメントコンソール を使用して本稼働 DB クラスターを作成する場合は、デフォルトで削除保護は有効です。ただし、AWS CLI または API を使用してクラスターを作成する場合は、デフォルトで削除保護が無効になります。削除保護を有効または無効にしても、停止は発生しません。クラスターを削除できるようにするには、クラスターの設定を変更し、削除保護を無効にします。削除保護のオン/オフの切り替えの詳細については、「コンソール、CLI、API を使用した DB クラスターの変更」を参照してください。

ヒント

すべての DB インスタンスが削除された後でも、クラスター内に新しい DB インスタンスを作成することで、データに再びアクセスできます。

停止した Aurora クラスターの削除

状態が stopped となっているクラスターは削除できません。この場合は、クラスターを削除する前にクラスターを起動します。詳細については、「Aurora DB クラスターの開始」を参照してください。

リードレプリカである Aurora MySQL クラスターの削除

Aurora MySQL では、以下の条件の両方に該当した場合、DB クラスター内の DB インスタンスを削除できません。

  • DB クラスターは別の Aurora DB クラスターのリードレプリカです。

  • DB インスタンスは、DB クラスター内の唯一のインスタンスです。

この場合に DB インスタンスを削除するには、まず DB クラスターを昇格させます。そうすれば、リードレプリカではなくなります。昇格が完了したら、DB クラスター内の最終 DB インスタンスを削除できます。詳細については、「AWS リージョン間での Amazon Aurora MySQL DB クラスターのレプリケーション」を参照してください。

Aurora DB クラスターからの DB インスタンスの削除

クラスター全体を削除するプロセスの一環として、Aurora DB クラスターから DB インスタンスを削除できます。クラスターに一定数の DB インスタンスが含まれている場合、クラスターを削除するには、各 DB インスタンスを削除していく必要があります。クラスターを実行したままの状態で、クラスターから 1 つ以上のリーダーインスタンスを削除することもできます。コンピューティングキャパシティとそれに関連する料金を削減するために、ビジー状態ではないクラスターで、これを行うことができます。

DB インスタンスを削除するには、インスタンスの名前を指定します。

AWS マネジメントコンソール、AWS CLI、RDS API を使用して DB インスタンスを削除できます。

Aurora DB クラスターの場合、DB インスタンスを削除しても、クラスター全体が必ずしも削除されるとは限りません。Aurora クラスターがビジーでない状態で、そのクラスター内の DB インスタンスを削除すると、コンピューティングキャパシティとそれに関連する料金を削減できます。1 個または 0 個の DB インスタンスを持つ Aurora クラスターでの特殊な状況については、「単一の DB インスタンスを使用している Aurora クラスターの削除」および「空の Aurora クラスターの作成」を参照してください。

注記

削除保護が有効になっている DB クラスターを削除することはできません。詳細については、「Aurora クラスターの削除保護」を参照してください。

DB クラスターの設定を変更することで、削除保護を無効にできます。詳細については、「Amazon Aurora DB クラスターの変更」を参照してください。

DB インスタンスを削除するには

  1. AWS マネジメントコンソールにサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインで、[データベース] を選択し、削除する DB インスタンスを選択します。

  3. [ Actions] では、[Delete] を選択します。

  4. ボックスに「delete me」と入力します。

  5. [Delete] を選択します。

AWS CLI を使用して DB インスタンスを削除するには、delete-db-instance コマンドを呼び出して --db-instance-identifier 値を指定します。

Linux、macOS、Unix の場合:

aws rds delete-db-instance \ --db-instance-identifier mydbinstance

Windows の場合:

aws rds delete-db-instance ^ --db-instance-identifier mydbinstance

Amazon RDS API を使用して DB インスタンスを削除するには、DeleteDBInstance オペレーションを呼び出して DBInstanceIdentifier パラメータを指定します。

注記

DB インスタンスのステータスが deleting の場合、その CA 認定の値は、RDS コンソールにも、AWS CLI コマンドまたは RDS API オペレーションの出力にも表示されません。CA 認定の詳細については、「SSL/TLS を使用した DB クラスターへの接続の暗号化」を参照してください。