

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 刪除 Aurora 資料庫叢集和資料庫執行個體
<a name="USER_DeleteCluster"></a>

當您不再需要 Aurora 資料庫叢集時，您可以刪除它。刪除叢集會移除包含所有資料的叢集磁碟區。刪除叢集之前，您可以儲存資料的快照。您可以在稍後還原快照，以建立包含相同資料的新叢集。

您也可以從叢集刪除資料庫執行個體，同時保留叢集本身及其包含的資料。如果叢集不忙碌，或您不需要多個資料庫執行個體的計算容量，刪除資料庫執行個體可協助您減少費用。

**Topics**
+ [刪除 Aurora 資料庫叢集](#USER_DeleteCluster.DeleteCluster)
+ [Aurora 叢集的刪除保護](#USER_DeletionProtection)
+ [刪除已停止的 Aurora 叢集](#USER_Deletion_Stopped_Cluster)
+ [刪除僅供讀取複本的 Aurora MySQL 叢集](#USER_DeleteInstance.AuroraReplica)
+ [刪除叢集時的最終快照](#USER_Deletion_Final_Snapshot)
+ [從 Aurora 個體資料庫叢集刪除資料庫執行個體](#USER_DeleteInstance)

## 刪除 Aurora 資料庫叢集
<a name="USER_DeleteCluster.DeleteCluster"></a>

Aurora 不提供刪除資料庫叢集的單一步驟方法。此設計選項旨在防止您意外遺失資料或讓應用程式離線。Aurora 應用程式通常是關鍵任務，而且需要高可用性。因此，Aurora 透過新增和移除資料庫執行個體，可以輕鬆擴充和縮減叢集的容量。移除叢集本身需要您另行刪除。

使用下列一般程序，從叢集中移除所有資料庫執行個體，然後刪除叢集本身。

1. 刪除叢集中任一個讀取器執行個體。使用 [從 Aurora 個體資料庫叢集刪除資料庫執行個體](#USER_DeleteInstance) 中的程序。

   如果叢集有任一個讀取器執行個體，則刪除其中一個執行個體只會減少叢集的運算容量。首先刪除讀取器執行個體可確保叢集能夠在整個程序中保持可用，而且不會執行不必要的容錯移轉作業。

1. 從叢集中刪除寫入器執行個體。同樣地，請使用 [從 Aurora 個體資料庫叢集刪除資料庫執行個體](#USER_DeleteInstance) 中的程序。

    當您刪除資料庫執行個體時，即使刪除所有資料庫執行個體，叢集及其關聯的叢集磁碟區仍會保留。

1. 刪除資料庫叢集。
   + **AWS 管理主控台** - 選擇叢集，然後從**動作**選單選擇**刪除**。您可以選擇下列選項來保留叢集中的資料，以備日後需要：
     + 建立叢集磁碟區的最終快照。預設設定是建立最終快照。
     + 保留自動備份。預設設定不保留自動備份。
**注意**  
Aurora Serverless v1 資料庫叢集的自動備份不會保留。

     Aurora 也會要求您確認是否要刪除叢集。
   + **CLI 和 API** - 呼叫 `delete-db-cluster` CLI 命令或 `DeleteDBCluster` API 操作。您可以選擇下列選項來保留叢集中的資料，以備日後需要：
     + 建立叢集磁碟區的最終快照。
     + 保留自動備份。
**注意**  
Aurora Serverless v1 資料庫叢集的自動備份不會保留。

**Topics**
+ [建立空 Aurora 叢集](#USER_DeleteInstance.Empty)
+ [使用單一資料庫執行個體刪除 Aurora 叢集](#USER_DeleteInstance.SingleInstance)
+ [刪除具有多個資料庫執行個體的 Aurora 叢集](#USER_DeleteInstance.MultipleInstances)

### 建立空 Aurora 叢集
<a name="USER_DeleteInstance.Empty"></a>

您可以使用 AWS 管理主控台 AWS CLI或 Amazon RDS API 刪除空的資料庫叢集。

**提示**  
您可以保留沒有資料庫執行個體的叢集，以保留資料，而不會對叢集產生 CPU 費用。您可以為叢集建立一個或多個新資料庫執行個體，快速開始再次使用叢集。不過，您只能使用 AWS CLI 或 RDS API 新增資料庫執行個體。您無法使用 Amazon RDS 主控台新增資料庫執行個體。當叢集沒有任何關聯的資料庫執行個體時，您可以在叢集上執行 Aurora 特定的管理作業。您只是無法存取資料或執行任何需要連線到資料庫執行個體的操作。

#### 主控台
<a name="delete-db-cluster.CON"></a>

**刪除資料庫叢集**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中選擇**資料庫**，然後選擇您要刪除的資料庫叢集。

1. 對於 **Actions** (動作)，請選擇 **Delete** (刪除)。

1. 若要建立資料庫叢集的最終資料庫快照，請選擇**是否建立最終快照？**。這是預設設定。

1. 如果您選擇建立最終快照，請輸入**最終快照名稱**。

1. 若要保留自動備份，請選擇 **Retain automated backups (保留自動備份)**。這不是預設設定。

1. 在方塊中輸入 **delete me**。

1. 選擇 **刪除**。

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

若要使用 刪除空的 Aurora 資料庫叢集 AWS CLI，請呼叫 [delete-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-cluster.html) 命令。

假設空叢集 `deleteme-zero-instances` 僅用於開發和測試，並且不包含任何重要資料。在這種情況下，刪除叢集時，不需要保留叢集磁碟區的快照。下列範例會示範叢集不包含任何資料庫執行個體，然後刪除空叢集，而不需建立最終快照或保留自動備份。

```
$ 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 資料庫叢集，請呼叫 [DeleteDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBCluster.html) 操作。

### 使用單一資料庫執行個體刪除 Aurora 叢集
<a name="USER_DeleteInstance.SingleInstance"></a>

即使資料庫叢集已啟用刪除保護功能，您仍然可以刪除最後一個資料庫執行個體。在這種情況下，資料庫叢集本身仍會存在，資料將獲得保留。您可將新的資料庫執行個體連接至叢集，即可再次存取資料。

下列範例顯示叢集仍有相關聯的資料庫執行個體時，`delete-db-cluster` 命令無法運作。此叢集具有單一寫入器資料庫執行個體。當我們檢查叢集中的資料庫執行個體時，我們會檢查每個執行個體的 `IsClusterWriter` 屬性。叢集可以有零個或一個寫入器資料庫執行個體。`true` 的值表示寫入器資料庫執行個體。`false` 的值表示讀取器資料庫執行個體。叢集可以有零個、一個或多個讀取器資料庫執行個體。在這種情況下，我們使用 `delete-db-instance` 命令刪除寫入器資料庫執行個體。一旦資料庫執行個體進入 `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"
}
```

### 刪除具有多個資料庫執行個體的 Aurora 叢集
<a name="USER_DeleteInstance.MultipleInstances"></a>

如果您的叢集包含多個資料庫執行個體，通常會有單一寫入器執行個體和一個或多個讀取器執行個體。讀取器執行個體提供具備高可用性的協助，藉由處於待命狀態，在寫入器執行個體遇到問題來進行接管。您也可以使用讀取器執行個體來調整叢集以處理大量讀取的工作負載，而不會為寫入器執行個體增加額外負荷。

若要刪除具有多個讀取器資料庫執行個體的叢集，請先刪除讀取器執行個體，然後刪除寫入器執行個體。刪除寫入器執行個體會保留叢集及其資料。您可透過個別動作刪除叢集。
+ 如需刪除 Aurora 資料庫執行個體的程序，請參閱 [從 Aurora 個體資料庫叢集刪除資料庫執行個體](#USER_DeleteInstance)。
+ 如需刪除 Aurora 叢集中寫入器資料庫執行個體的程序，請參閱 [使用單一資料庫執行個體刪除 Aurora 叢集](#USER_DeleteInstance.SingleInstance)。
+ 如需刪除空 Aurora 叢集的程序，請參閱 [建立空 Aurora 叢集](#USER_DeleteInstance.Empty)。

此 CLI 範例顯示如何刪除包含寫入器資料庫執行個體和單一讀取器資料庫執行個體的叢集。`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"
}
```

下列範例顯示如何刪除包含寫入器資料庫執行個體和多個讀取器資料庫執行個體的資料庫叢集。它使用來自 `describe-db-clusters` 命令的簡潔輸出來獲取寫入器和讀取器執行個體的報告。同樣地，在刪除寫入器資料庫執行個體之前，我們會先刪除所有的讀取器執行個體。我們刪除讀取器資料庫執行個體的順序無關緊要。

假設這個具有多個資料庫執行個體的叢集確實包含值得保留的資料。因此，此範例中的 `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>

您無法刪除已啟用刪除保護的叢集。您可以刪除叢集中的資料庫執行個體，但不能刪除叢集本身。如此一來，您便可避免意外刪除包含所有資料的叢集磁碟區。無論您嘗試使用主控台 AWS CLI、 或 RDS API 刪除叢集，Aurora 都會對資料庫叢集強制執行刪除保護。

當您使用 AWS 管理主控台建立生產資料庫叢集時，預設會啟用刪除保護。不過，如果您使用 AWS CLI 或 API 建立叢集，則預設會停用刪除保護。啟用或停用刪除保護不會導致停機。若要能夠刪除叢集，請修改叢集並停用刪除保護。如需更多詳細資訊，瞭解如何開啟及關閉刪除保護功能，請參閱[使用主控台、CLI 和 API 修改資料庫叢集](Aurora.Modifying.md#Aurora.Modifying.Cluster)。

**提示**  
即使刪除所有資料庫執行個體，您也可以在叢集中建立新的資料庫執行個體來存取資料。

## 刪除已停止的 Aurora 叢集
<a name="USER_Deletion_Stopped_Cluster"></a>

如果叢集處於 `stopped` 狀態，則無法刪除叢集。在此情況下，請先啟動叢集，再刪除叢集。如需更多詳細資訊，請參閱 [啟動 Aurora 資料庫叢集](aurora-cluster-stop-start.md#aurora-cluster-start)。

## 刪除僅供讀取複本的 Aurora MySQL 叢集
<a name="USER_DeleteInstance.AuroraReplica"></a>

針對 Aurora MySQL，如果以下條件成立，則無法刪除資料庫叢集中的資料庫執行個體：
+ 此資料庫叢集為另一個 Aurora 資料庫叢集的僅供讀取複本。
+ 此資料庫執行個體是資料庫叢集中唯一的執行個體。

若要在此情況下刪除資料庫執行個體，請先提升資料庫叢集，使其不再是僅供讀取複本。升級完畢後，您可以刪除資料庫叢集中的最後一個資料庫執行個體。如需更多詳細資訊，請參閱 [跨 AWS 區域 複寫 Amazon Aurora MySQL 資料庫叢集](AuroraMySQL.Replication.CrossRegion.md)。

## 刪除叢集時的最終快照
<a name="USER_Deletion_Final_Snapshot"></a>

在本節中，範例會顯示如何在刪除 Aurora 叢集時選擇是否要拍攝最終快照。如果您選擇拍攝最終快照，但您指定的名稱與現有快照相符，則操作會停止並顯示錯誤。在此情況下，請檢查快照詳細資訊，以確認它是否代表您目前的詳細資料，或是否為較舊的快照。如果現有的快照集沒有您想要保留的最新資料，請重新命名快照集後再試一次，或為**最終快照**參數指定不同的名稱。

## 從 Aurora 個體資料庫叢集刪除資料庫執行個體
<a name="USER_DeleteInstance"></a>

您可以從 Aurora 資料庫叢集刪除資料庫執行個體，作為刪除整個叢集程序的一部分。如果您的叢集包含一定數量的資料庫執行個體，則刪除叢集需要刪除每個資料庫執行個體。您也可以在叢集保持執行狀態時刪除叢集中的一個或多個讀取器執行個體。如果叢集不忙碌，您可以這麼做來減少運算容量和相關費用。

若要刪除資料庫執行個體，您必須指定執行個體的名稱。

您可以使用 AWS CLI、 或 RDS API AWS 管理主控台刪除資料庫執行個體。

**注意**  
在刪除 Aurora 複本時，隨即會移除其執行個體端點，並且會從讀取器端點移除 Aurora 複本。若在要刪除的 Aurora 複本上有陳述式正在執行，則會有三分鐘的寬限期。現有陳述式在寬限期期間內可以完成。在寬限期結束時，Aurora 複本會關閉並刪除。

對於 Aurora 資料庫叢集，刪除資料庫執行個體不一定會刪除整個叢集。您可以刪除 Aurora 叢集中的資料庫執行個體，以便在叢集不忙碌時減少運算容量和相關費用。如需了解具有一個資料庫執行個體或零個資料庫執行個體之 Aurora 叢集的特殊情況，請參閱 [使用單一資料庫執行個體刪除 Aurora 叢集](#USER_DeleteInstance.SingleInstance) 和 [建立空 Aurora 叢集](#USER_DeleteInstance.Empty)。

**注意**  
啟用資料庫叢集的刪除保護時，無法刪除該資料庫執行個體。如需更多詳細資訊，請參閱 [Aurora 叢集的刪除保護](#USER_DeletionProtection)。  
您可以修改資料庫叢集來停用刪除保護。如需詳細資訊，請參閱[修改 Amazon Aurora 資料庫叢集](Aurora.Modifying.md)。

### 主控台
<a name="USER_DeleteInstance.CON"></a>

**刪除資料庫叢集中的資料庫執行個體**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中選擇 **Databases** (資料庫)，然後選擇您要刪除的資料庫執行個體。

1. 對於 **Actions** (動作)，請選擇 **Delete** (刪除)。

1. 在方塊中輸入 **delete me**。

1. 選擇 **刪除**。

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

若要使用 刪除資料庫執行個體 AWS CLI，請呼叫 [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 刪除資料庫執行個體，請呼叫 [DeleteDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBInstance.html) 操作並指定 `DBInstanceIdentifier` 參數。

**注意**  
 當資料庫執行個體的狀態為 時`deleting`，其 CA 憑證值不會出現在 RDS 主控台或 AWS CLI 命令或 RDS API 操作的輸出中。如需憑證授權機構憑證的詳細資訊，請參閱[使用 SSL/TLS 加密與資料庫叢集的連線](UsingWithRDS.SSL.md)。