

# 障害挿入クエリを使用した Amazon Aurora MySQL のテスト
<a name="AuroraMySQL.Managing.FaultInjectionQueries"></a>

障害挿入クエリを使用して、Aurora MySQL DB クラスターの耐障害性をテストできます。フォールト挿入クエリは、SQL コマンドとして Amazon Aurora インスタンスに発行されます。次のいずれかのイベント発生をシミュレートしてスケジュールすることができます。
+ 書き込みまたは読み取り DB インスタンスの障害
+ Aurora レプリカの障害
+ ディスクの障害
+ ディスクの輻輳

障害挿入クエリでクラッシュを指定すると、Aurora MySQL DB インスタンスのクラッシュが強制的に実行されます。その他の障害挿入クエリでは、障害イベントのシミュレーションが実行されますが、そのイベントは発生しません。障害挿入クエリを送信する場合、障害イベントのシミュレーションが発生する時間も指定します。

Aurora レプリカのエンドポイントに接続することによって、Aurora レプリカインスタンスの 1 つに障害挿入クエリを送信できます。詳細については、「[Amazon Aurora エンドポイント接続](Aurora.Overview.Endpoints.md)」を参照してください。

障害挿入クエリの実行には、すべてのマスターユーザー権限が必要です。詳細については、「[マスターユーザーアカウント権限](UsingWithRDS.MasterAccounts.md)」を参照してください。

## インスタンスのクラッシュのテスト
<a name="AuroraMySQL.Managing.FaultInjectionQueries.Crash"></a>

`ALTER SYSTEM CRASH` 障害挿入クエリを使用して、Amazon Aurora インスタンスのクラッシュを強制的に発生させることができます。

この障害挿入クエリでは、フェイルオーバーが発生しません。フェイルオーバーをテストする場合、RDS コンソールで DB クラスターの **[フェイルオーバー]** インスタンスアクションを選択するか、AWS CLI コマンドの [failover-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/failover-db-cluster.html)、または RDS API の [FailoverDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_FailoverDBCluster.html) オペレーションを使用します。

### 構文
<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 DB クラスターのライターインスタンスにあるディスパッチャーのクラッシュがシミュレートされます。*ディスパッチャー* は Amazon Aurora DB クラスターのクラスターボリュームに対して更新を書き込みます。
+ **`NODE`** — MySQL 互換データベースと Amazon Aurora インスタンスのディスパッチャーの両方のクラッシュがシミュレートされます。この障害挿入のシミュレーションでは、キャッシュも削除されます。

デフォルトのクラッシュタイプは `INSTANCE` です。

## Aurora レプリカの障害のテスト
<a name="AuroraMySQL.Managing.FaultInjectionQueries.ReplicaFailure"></a>

`ALTER SYSTEM SIMULATE READ REPLICA FAILURE` 障害挿入クエリを使用して、Aurora レプリカの障害をシミュレートできます。

Aurora レプリカの障害は、指定した期間で、ライターインスタンスから Aurora レプリカまたは DB クラスター内のすべての 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 を指定すると、すべてのリクエストがブロックされます。
+ **障害のタイプ** — シミュレートする障害のタイプ。DB クラスター内のすべての Aurora レプリカの障害をシミュレートするには、`TO ALL` を指定します。1 つの Aurora レプリカの障害をシミュレートするには、`TO` と Aurora レプリカの名前を指定します。デフォルトの障害タイプは `TO ALL` です。
+ **`quantity`** — Aurora レプリカの障害のシミュレートにかかる時間。この値は時間の量の後に時間単位を続けて指定します。シミュレーションは、指定した単位の期間だけ発生します。例えば、`20 MINUTE` と指定すると、シミュレーションは 20 分間実行されます。
**注記**  
Aurora レプリカの障害イベントの時間を指定するときには注意が必要です。指定する時間が長すぎ、障害イベントの発生時にライターインスタンスが大量のデータを書き込んだ場合、Aurora DB クラスターは Aurora レプリカがクラッシュしたものと見なし、レプリカを置き換える可能性があります。

## ディスクの障害のテスト
<a name="AuroraMySQL.Managing.FaultInjectionQueries.DiskFailure"></a>

`ALTER SYSTEM SIMULATE DISK FAILURE` 障害挿入クエリを使用して、Aurora DB クラスターのディスクの障害をシミュレートできます。

ディスク障害のシミュレーションでは、Aurora DB クラスターがランダムにディスクセグメントをエラーとしてマークします。シミュレーションの実行中、これらのセグメントに対するリクエストはブロックされます。

### 構文
<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 DB クラスターのボリュームステータスの表示](AuroraMySQL.Managing.VolumeStatus.md)」を参照してください。
+ **`NODE index`** — 障害イベントをシミュレートする特定のストレージノード。利用可能なストレージノードの範囲を超えた場合は、指定できる最大インデックス値を示すエラーが表示されます。詳細については、「[Aurora MySQL DB クラスターのボリュームステータスの表示](AuroraMySQL.Managing.VolumeStatus.md)」を参照してください。
+ **`quantity`** — ディスクの障害をシミュレートする時間。この値は時間の量の後に時間単位を続けて指定します。シミュレーションは、指定した単位の期間だけ発生します。例えば、`20 MINUTE` と指定すると、シミュレーションは 20 分間実行されます。

## ディスクの輻輳のテスト
<a name="AuroraMySQL.Managing.FaultInjectionQueries.DiskCongestion"></a>

`ALTER SYSTEM SIMULATE DISK CONGESTION` 障害挿入クエリを使用して、Aurora DB クラスターのディスクの障害をシミュレートできます。

ディスク輻輳のシミュレーションでは、Aurora DB クラスターがランダムにディスクセグメントを輻輳としてマークします。これらのセグメントに対するリクエストは、シミュレーションの実行中、指定した最小遅延値と最大遅延値の間で遅延します。

### 構文
<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 分間実行されます。