

# Aurora DB クラスターと DB インスタンスを削除する
<a name="USER_DeleteCluster"></a>

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

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

**Topics**
+ [Aurora DB クラスターの削除](#USER_DeleteCluster.DeleteCluster)
+ [Aurora クラスターの削除保護](#USER_DeletionProtection)
+ [停止した Aurora クラスターの削除](#USER_Deletion_Stopped_Cluster)
+ [リードレプリカである Aurora MySQL クラスターの削除](#USER_DeleteInstance.AuroraReplica)
+ [クラスター削除時の最終スナップショット](#USER_Deletion_Final_Snapshot)
+ [Aurora DB クラスターからの DB インスタンスの削除](#USER_DeleteInstance)

## Aurora DB クラスターの削除
<a name="USER_DeleteCluster.DeleteCluster"></a>

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

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

1. クラスター内のリーダーインスタンスをすべて削除します。[Aurora DB クラスターからの DB インスタンスの削除](#USER_DeleteInstance) にある手順を実行します。

   クラスターにリーダーインスタンスがある場合、いずれかのインスタンスを削除すると、クラスターのコンピューティング容量が削減されるだけです。初期にリーダーインスタンスを削除すると、プロシージャ全体でクラスターが使用可能なまま、不要なフェールオーバー操作は実行されなくなります。

1. クラスターからライターインスタンスを削除します。再度、[Aurora DB クラスターからの DB インスタンスの削除](#USER_DeleteInstance) の手順を使用します。

    すべての DB インスタンスを削除した後も、クラスターとそれに関連付けられたクラスターボリュームはそのまま残ります。

1. DB クラスターを削除する
   + **AWS マネジメントコンソール** — クラスターを選択し、**[アクション]** から **[削除]** を選択します。後で必要になった場合に備えて、以下のオプションを選択してクラスターのデータを保存できます。
     + クラスターボリュームの最終スナップショットを作成します。デフォルト設定では、最終スナップショットを作成します。
     + 自動バックアップの保持 デフォルト設定では、自動バックアップを保持しません。
**注記**  
Aurora Serverless v1 DB クラスターの自動バックアップは保持されません。

     また、Aurora はユーザーに対し、クラスターを削除することの確認も促します。
   + **CLI と API** — `delete-db-cluster` CLI コマンドまたは `DeleteDBCluster` API オペレーションを呼び出します。後で必要になった場合に備えて、以下のオプションを選択してクラスターのデータを保存できます。
     + クラスターボリュームの最終スナップショットを作成します。
     + 自動バックアップの保持
**注記**  
Aurora Serverless v1 DB クラスターの自動バックアップは保持されません。

**Topics**
+ [空の Aurora クラスターの削除](#USER_DeleteInstance.Empty)
+ [単一の DB インスタンスを使用している Aurora クラスターの削除](#USER_DeleteInstance.SingleInstance)
+ [複数の DB インスタンスを持つ Aurora クラスターの削除](#USER_DeleteInstance.MultipleInstances)

### 空の Aurora クラスターの削除
<a name="USER_DeleteInstance.Empty"></a>

AWS マネジメントコンソール、AWS CLI、または Amazon RDS API を使用して、空の DB クラスターを削除できます。

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

#### コンソール
<a name="delete-db-cluster.CON"></a>

**DB クラスターを削除するには**

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

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

1. **[アクション]** で、**[削除]** を選択します。

1. DB クラスターの最終 DB スナップショットを作成するには、「**最終スナップショットを作成しますか**」を選択します。これはデフォルトの設定です。

1. 最終スナップショットの作成を選択した場合は、[**Final snapshot name (最終スナップショット名)**] を入力します。

1. 自動バックアップを保持するには、[**Retain automated backups (自動バックアップの保持)**] を選択します。これはデフォルトの設定ではありません。

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

1. **[削除]** を選択します。

#### CLI
<a name="delete-db-cluster.CLI"></a>

AWS CLI を使用して、空の Aurora DB クラスターを削除するには、[delete-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-cluster.html) コマンドを呼び出します。

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

```
$ aws rds describe-db-clusters --db-cluster-identifier deleteme-zero-instances --output text \
  --query '*[].["Cluster:",DBClusterIdentifier,DBClusterMembers[*].["Instance:",DBInstanceIdentifier,IsClusterWriter]]
Cluster:        deleteme-zero-instances

$ aws rds delete-db-cluster --db-cluster-identifier deleteme-zero-instances \
  --skip-final-snapshot \
  --delete-automated-backups
{
  "DBClusterIdentifier": "deleteme-zero-instances",
  "Status": "available",
  "Engine": "aurora-mysql"
}
```

#### RDS API
<a name="delete-db-cluster.API"></a>

Amazon RDS API を使用して空の Aurora DB クラスターを削除するには、[DeleteDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBCluster.html) オペレーションを呼び出します。

### 単一の DB インスタンスを使用している Aurora クラスターの削除
<a name="USER_DeleteInstance.SingleInstance"></a>

DB クラスターで削除保護が有効になっている場合でも、最後の 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-identifier 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-identifier deleteme-writer-only \
  --query '*[].[DBClusterIdentifier,Status,DBClusterMembers[*].[DBInstanceIdentifier,IsClusterWriter]]'
[
    [
        "deleteme-writer-only",
        "available",
        [
            [
                "instance-2130",
                true
            ]
        ]
    ]
]

$ aws rds delete-db-instance --db-instance-identifier instance-2130
{
  "DBInstanceIdentifier": "instance-2130",
  "DBInstanceStatus": "deleting",
  "Engine": "aurora-mysql"
}

$ aws rds delete-db-cluster --db-cluster-identifier deleteme-writer-only \
  --skip-final-snapshot \
  --delete-automated-backups
{
  "DBClusterIdentifier": "deleteme-writer-only",
  "Status": "available",
  "Engine": "aurora-mysql"
}
```

### 複数の DB インスタンスを持つ Aurora クラスターの削除
<a name="USER_DeleteInstance.MultipleInstances"></a>

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

複数のリーダー DB インスタンスを保持するクラスターを削除するには、まずリーダーインスタンスを削除した上で、ライターインスタンスを削除します。ライターインスタンスを削除しても、クラスターとそのデータは所定の位置に残ります。クラスターは別のアクションで削除します。
+ Aurora DB インスタンスを削除する手順については、「[Aurora DB クラスターからの DB インスタンスの削除](#USER_DeleteInstance)」を参照してください。
+ Aurora クラスター内のライター DB インスタンスを削除する手順については、「[単一の DB インスタンスを使用している Aurora クラスターの削除](#USER_DeleteInstance.SingleInstance)」を参照してください。
+ 空の Aurora クラスターを削除する手順については、「[空の Aurora クラスターの削除](#USER_DeleteInstance.Empty)」を参照してください。

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

```
$ aws rds delete-db-cluster --db-cluster-identifier 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-identifier 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-identifier instance-1039
{
  "DBInstanceIdentifier": "instance-1039",
  "DBInstanceStatus": "deleting",
  "Engine": "aurora-mysql"
}

$ aws rds delete-db-instance --db-instance-identifier instance-7384
{
  "DBInstanceIdentifier": "instance-7384",
  "DBInstanceStatus": "deleting",
  "Engine": "aurora-mysql"
}

$ aws rds delete-db-cluster --db-cluster-identifier deleteme-writer-and-reader \
  --skip-final-snapshot \
  --delete-automated-backups
{
  "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` パラメータが含まれています。また、自動バックアップを保持するための `--no-delete-automated-backups` パラメータも含まれています。

```
$ aws rds describe-db-clusters --db-cluster-identifier 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-identifier instance-1010
{
  "DBInstanceIdentifier": "instance-1010",
  "DBInstanceStatus": "deleting",
  "Engine": "aurora-mysql"
}

$ aws rds delete-db-instance --db-instance-identifier instance-5410
{
  "DBInstanceIdentifier": "instance-5410",
  "DBInstanceStatus": "deleting",
  "Engine": "aurora-mysql"
}

$ aws rds delete-db-instance --db-instance-identifier instance-9948
{
  "DBInstanceIdentifier": "instance-9948",
  "DBInstanceStatus": "deleting",
  "Engine": "aurora-mysql"
}

$ aws rds delete-db-instance --db-instance-identifier instance-8451
{
  "DBInstanceIdentifier": "instance-8451",
  "DBInstanceStatus": "deleting",
  "Engine": "aurora-mysql"
}

$ aws rds delete-db-cluster --db-cluster-identifier deleteme-multiple-readers \
  --no-delete-automated-backups \
  --no-skip-final-snapshot \
  --final-db-snapshot-identifier deleteme-multiple-readers-final-snapshot
{
  "DBClusterIdentifier": "deleteme-multiple-readers",
  "Status": "available",
  "Engine": "aurora-mysql"
}
```

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

```
$ aws rds describe-db-cluster-snapshots \
  --db-cluster-snapshot-identifier deleteme-multiple-readers-final-snapshot
{
    "DBClusterSnapshots": [
        {
            "AvailabilityZones": [],
            "DBClusterSnapshotIdentifier": "deleteme-multiple-readers-final-snapshot",
            "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-final-snapshot",
            "DBClusterIdentifier": "deleteme-multiple-readers",
            "SnapshotCreateTime": "11T01:40:07.354000+00:00",
            "Engine": "aurora-mysql",
...
```

## Aurora クラスターの削除保護
<a name="USER_DeletionProtection"></a>

削除保護が有効になっているクラスターは削除できません。そのクラスター内の DB インスタンスは削除が可能ですが、クラスター自体は削除できません。これにより、クラスターボリュームに保存されたすべてのデータが、誤って削除されることを防止できます。コンソール、AWS CLI、あるいは RDS APIを使用して DB クラスターを削除しようとした場合でも、クラスターに対しては、削除保護が Aurora により強制的に適用されます。

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

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

## 停止した Aurora クラスターの削除
<a name="USER_Deletion_Stopped_Cluster"></a>

状態が `stopped` となっているクラスターは削除できません。この場合は、クラスターを削除する前にクラスターを起動します。詳細については、「[Aurora DB クラスターの開始](aurora-cluster-stop-start.md#aurora-cluster-start)」を参照してください。

## リードレプリカである Aurora MySQL クラスターの削除
<a name="USER_DeleteInstance.AuroraReplica"></a>

Aurora MySQL では、以下の条件の両方に該当した場合、DB クラスター内の DB インスタンスを削除できません。
+ DB クラスターは別の Aurora DB クラスターのリードレプリカです。
+ DB インスタンスは、DB クラスター内の唯一のインスタンスです。

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

## クラスター削除時の最終スナップショット
<a name="USER_Deletion_Final_Snapshot"></a>

このセクションでは、Aurora クラスターを削除する際に最終スナップショットを作成するかどうかを選択する方法の例を示します。最終スナップショットを作成することを選択した場合でも、そこで指定した名前と同じ名前の既存のスナップショットが存在する場合には、このオペレーションはエラーとともに停止します。この場合、スナップショットの詳細を調査し、それが現在の状態に対応しているものかどうか、または古いスナップショットのものかどうかを確認します。既存のスナップショットに、保存すべき最新のデータが含まれていない場合は、スナップショットの名前を変更した上で再試行するか、[**最終スナップショット**] パラメータに別の名前を設定します。

## Aurora DB クラスターからの DB インスタンスの削除
<a name="USER_DeleteInstance"></a>

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

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

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

**注記**  
Aurora レプリカが削除されるとそのインスタンスエンドポイントは直ちに削除され、Aurora レプリカも読み込みエンドポイントから削除されます。削除中の Aurora レプリカで実行されているステートメントがある場合は、削除までに 3 分の猶予期間があります。既存のステートメントは、猶予期間中に終了する場合があります。猶予期間が終了すると、Aurora レプリカはシャットダウンし、削除されます。

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

**注記**  
削除保護が有効になっている DB クラスターを削除することはできません。詳細については、「[Aurora クラスターの削除保護](#USER_DeletionProtection)」を参照してください。  
DB クラスターの設定を変更することで、削除保護を無効にできます。詳細については、「[Amazon Aurora DB クラスターの変更](Aurora.Modifying.md)」を参照してください。

### コンソール
<a name="USER_DeleteInstance.CON"></a>

**DB クラスター内の DB インスタンスを削除するには**

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

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

1. [**アクション**] で、[**削除**] を選択します。

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

1. [**削除**] を選択します。

### AWS CLI
<a name="USER_DeleteInstance.CLI"></a>

AWS CLI を使用して DB インスタンスを削除するには、[delete-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-instance.html) コマンドを呼び出して `--db-instance-identifier` 値を指定します。

**Example**  
Linux、macOS、Unix の場合:  

```
aws rds delete-db-instance \
    --db-instance-identifier mydbinstance
```
Windows の場合:  

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

### RDS API
<a name="USER_DeleteInstance.API"></a>

Amazon RDS API を使用して DB インスタンスを削除するには、 [DeleteDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBInstance.html) オペレーションを呼び出して、`DBInstanceIdentifier` パラメータを指定します。

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