

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

# 使用錯誤注入查詢測試 Amazon Aurora MySQL
<a name="AuroraMySQL.Managing.FaultInjectionQueries"></a>

您可以使用錯誤注入查詢來測試 Aurora MySQL 資料庫叢集的容錯能力。錯誤注入查詢作為 SQL 命令發出到 Amazon Aurora 執行個體。它們可讓您排程下列其中一個事件的模擬出現：
+ 寫入器或讀取器資料庫執行個體當機
+ Aurora 複本失敗
+ 磁碟失敗
+ 磁碟擁塞

當錯誤注入查詢指定當機時，它會強制 Aurora MySQL 資料庫執行個體發生當機。其他錯誤注入查詢會造成失敗事件的模擬，但不會造成事件發生。提交錯誤注入查詢時，您也可以指定讓失敗事件模擬發生的時間。

透過連線至 Aurora 複本的端點，您可以將錯誤注入查詢提交給您的其中一個 Aurora 複本執行個體。如需詳細資訊，請參閱[Amazon Aurora 端點連線](Aurora.Overview.Endpoints.md)。

執行錯誤注入查詢需要所有主要使用者權限。如需詳細資訊，請參閱[主要使用者帳戶權限](UsingWithRDS.MasterAccounts.md)。

## 測試執行個體當機
<a name="AuroraMySQL.Managing.FaultInjectionQueries.Crash"></a>

您可以使用 `ALTER SYSTEM CRASH` 錯誤注入查詢來強制讓 Amazon Aurora 執行個體當機。

針對此錯誤注入查詢，將不會發生容錯移轉。如果您要測試容錯移轉，則可以在 RDS 主控台為您的資料庫叢集選擇 **Failover** (容錯移轉) 執行個體動作，或是使用 [failover-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/failover-db-cluster.html) AWS CLI 命令或 [FailoverDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_FailoverDBCluster.html) RDS API 操作。

### 語法
<a name="AuroraMySQL.Managing.FaultInjectionQueries.Crash-Syntax"></a>

```
1. ALTER SYSTEM CRASH [ INSTANCE | DISPATCHER | NODE ];
```

### 選項
<a name="AuroraMySQL.Managing.FaultInjectionQueries.Crash-Options"></a>

此錯誤注入查詢需要下列其中一個當機類型：
+ ** `INSTANCE`**—模擬 Amazon Aurora 執行個體之 MySQL 相容資料庫的當機。
+ ** `DISPATCHER`**—模擬 Aurora 資料庫叢集寫入器執行個體上發送器的當機。*發送器*會將更新寫入 Amazon Aurora 資料庫叢集的叢集磁碟區。
+ ** `NODE`**—模擬 MySQL 相容資料庫和 Amazon Aurora 執行個體發送器的當機。針對此錯誤注入模擬，也會刪除快取。

預設的當機類型為 `INSTANCE`。

## 測試 Aurora 複本失敗
<a name="AuroraMySQL.Managing.FaultInjectionQueries.ReplicaFailure"></a>

您可以使用 `ALTER SYSTEM SIMULATE READ REPLICA FAILURE` 錯誤注入查詢來模擬 Aurora 複本的失敗。

Aurora 複本失敗將會對指定的時間間隔，封鎖對 Aurora 複本或資料庫叢集中所有 Aurora 複本來自寫入器執行個體的所有請求。當時間間隔完成，受影響的 Aurora 複本將與寫入器執行個體自動同步。

### 語法
<a name="AuroraMySQL.Managing.FaultInjectionQueries.ReplicaFailure-Syntax"></a>

```
1. ALTER SYSTEM SIMULATE percentage_of_failure PERCENT READ REPLICA FAILURE
2.     [ TO ALL | TO "replica name" ]
3.     FOR INTERVAL quantity { YEAR | QUARTER | MONTH | WEEK | DAY | HOUR | MINUTE | SECOND };
```

### 選項
<a name="AuroraMySQL.Managing.FaultInjectionQueries.ReplicaFailure-Options"></a>

此錯誤注入查詢會使用下列參數：
+ ** `percentage_of_failure`**—在失敗事件期間請求封鎖的百分比。此值可以是介於 0 與 100 之間的雙位數數字。如果指定 0，則不會封鎖任何請求。如果指定 100，則會封鎖所有請求。
+ **失敗類型** — 要模擬的失敗類型。指定 `TO ALL` 以模擬資料庫叢集中所有 Aurora 複本的失敗。指定 `TO` 和 Aurora 複本的名稱以模擬單一 Aurora 複本的失敗。預設的失敗類型為 `TO ALL`。
+ **`quantity`** — 模擬 Aurora 複本失敗的時間量。間隔為數量接著時間單位。模擬將發生該指定單位的時間。例如，`20 MINUTE` 將造成模擬執行 20 分鐘。
**注意**  
指定 Aurora 複本失敗事件的時間間隔時請注意。如果指定的時間間隔太長，而您的寫入器執行個體在失敗事件期間寫入大量資料，則 Aurora 資料庫叢集可能會假設 Aurora 複本已當機並加以取代。

## 測試磁碟失敗
<a name="AuroraMySQL.Managing.FaultInjectionQueries.DiskFailure"></a>

您可以使用 `ALTER SYSTEM SIMULATE DISK FAILURE` 錯誤注入查詢來模擬 Aurora 資料庫叢集的磁碟失敗。

在磁碟失敗模擬期間，Aurora 資料庫叢集會隨機將磁碟區段標示為發生錯誤。在模擬期間將封鎖對那些區段的請求。

### 語法
<a name="AuroraMySQL.Managing.FaultInjectionQueries.DiskFailure-Syntax"></a>

```
1. ALTER SYSTEM SIMULATE percentage_of_failure PERCENT DISK FAILURE
2.     [ IN DISK index | NODE index ]
3.     FOR INTERVAL quantity { YEAR | QUARTER | MONTH | WEEK | DAY | HOUR | MINUTE | SECOND };
```

### 選項
<a name="AuroraMySQL.Managing.FaultInjectionQueries.DiskFailure-Options"></a>

此錯誤注入查詢會使用下列參數：
+ **`percentage_of_failure`**—在失敗事件期間標示為發生錯誤的磁碟百分比。此值可以是介於 0 與 100 之間的雙位數數字。如果指定 0，則不會將任何磁碟標示為發生錯誤。如果指定 100，則會將整個磁碟標示為發生錯誤。
+ **`DISK index`**—模擬失敗事件的特定資料邏輯區塊。如果超出可用的資料邏輯區塊的範圍，您會收到錯誤，告訴您可以指定的最大索引值。如需更多詳細資訊，請參閱 [顯示 Aurora MySQL 資料庫叢集的磁碟區狀態](AuroraMySQL.Managing.VolumeStatus.md)。
+ **`NODE index`**—模擬失敗事件的特定儲存節點。如果超出儲存節點的可用範圍，您會收到錯誤，告訴您可以指定的最大索引值。如需更多詳細資訊，請參閱 [顯示 Aurora MySQL 資料庫叢集的磁碟區狀態](AuroraMySQL.Managing.VolumeStatus.md)。
+ **`quantity`**—模擬磁碟失敗的時間。間隔為數量接著時間單位。模擬將發生該指定單位的時間。例如，`20 MINUTE` 將造成模擬執行 20 分鐘。

## 測試磁碟壅塞
<a name="AuroraMySQL.Managing.FaultInjectionQueries.DiskCongestion"></a>

您可以使用 `ALTER SYSTEM SIMULATE DISK CONGESTION` 錯誤注入查詢來模擬 Aurora 資料庫叢集的磁碟失敗。

在磁碟擁塞模擬期間，Aurora 資料庫叢集會隨機將磁碟區段標示為擁塞。對那些區段的請求延遲將介於模擬期間的指定最小和最大延遲時間之間。

### 語法
<a name="AuroraMySQL.Managing.FaultInjectionQueries.DiskCongestion-Syntax"></a>

```
1. ALTER SYSTEM SIMULATE percentage_of_failure PERCENT DISK CONGESTION
2.     BETWEEN minimum AND maximum MILLISECONDS
3.     [ IN DISK index | NODE index ]
4.     FOR INTERVAL quantity { YEAR | QUARTER | MONTH | WEEK | DAY | HOUR | MINUTE | SECOND };
```

### 選項
<a name="AuroraMySQL.Managing.FaultInjectionQueries.DiskCongestion-Options"></a>

此錯誤注入查詢會使用下列參數：
+ ** `percentage_of_failure`**—在失敗事件期間標示為擁塞的磁碟百分比。此值可以是介於 0 與 100 之間的雙位數數字。如果指定 0，則不會將任何磁碟標示為擁塞。如果指定 100，則會將整個磁碟標示為擁塞。
+ **`DISK index` 或 `NODE index`** — 對其模擬失敗事件的特定磁碟或節點。如果超出磁碟或節點索引的範圍，您會收到錯誤，告訴您可以指定的最大索引值。
+ **`minimum` 和 `maximum`** — 最小和最大數量壅塞延遲 (以毫秒為單位)。標示為擁塞的磁碟區段將會於模擬期間在最小和最大數量的範圍內延遲隨機的時間 (毫秒)。
+ ** `quantity`**—模擬磁碟擁塞的時間。間隔為數量接著時間單位。模擬將發生達該指定的時間單位數量。例如，`20 MINUTE` 將造成模擬執行 20 分鐘。