

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

# Aurora ステートマシンと Step Functions ステートマシン
<a name="aurora-state-machines"></a>

このセクションでは、Amazon Aurora クラスターのフェイルオーバーとフェイルバックに固有のプロセスマシンとステートマシンについて説明します。クラスターはグローバルデータベースとして設定されます。

**注記**  
デモンストレーションの目的で、この例では Aurora MySQL 互換エディションを使用しています。Aurora PostgreSQL 互換エディションでも同様の手順を使用できます。

## 定常状態
<a name="aurora-steady-state"></a>

定常状態では、Amazon Aurora MySQL 互換グローバルデータベース (`dr-globaldb-cluster-mysql`) が 2 つの DB クラスターで作成されています。最初の DB クラスター (`db-cluster-01`) は、読み取り/書き込みワークロードを処理するためにプライマリ AWS リージョン (`us-east-1`) に作成されています。2 番目の DB クラスター (`db-cluster-02`) ** **は、読み取り専用ワークロードをサーバーするためにセカンダリリージョン (`us-west-2`) に作成されています。

DR ソリューションの提供に加えて、アプリケーションからセカンダリ DB クラスターに読み取りクエリをルーティングすることで、プライマリ DB クラスターの負荷を軽減できます。これらの各クラスターには、それぞれ `dbcluster-01-use1-instance-1`および という名前のデータベースインスタンスが 1 つ含まれ`dbcluster-02-usw2-instance-2`ています。

## イベント状態
<a name="aurora-event-state"></a>

Amazon Aurora グローバルデータベースを使用すると、災害の計画と復旧をかなり迅速に行うことができます。ディザスタからの復旧は通常、目標復旧時間 (RTO) と目標復旧時点 (RPO) の値を使用して測定されます。詳細については、[「Amazon Aurora グローバルデータベースでのスイッチオーバーまたはフェイルオーバーの使用](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-disaster-recovery.html)」を参照してください。

Aurora グローバルデータベースでは、フェイルオーバーには 2 つの異なるアプローチがあります。
+ スイッチオーバー (マネージド計画フェイルオーバー）
+ フェイルオーバー (手動の計画外のフェイルオーバー、または *のデタッチと昇格*）

### 切り替え
<a name="switchover"></a>

スイッチオーバーは、運用メンテナンスやその他の計画された運用手順など、制御された環境を対象としています。マネージド計画フェイルオーバーを使用すると、Aurora グローバルデータベースのプライマリ DB クラスターをセカンダリリージョンの 1 つに再配置できます。スイッチオーバーはセカンダリ DB クラスターがプライマリデータベースと同期されるまで待機するため、RPO は 0 (データ損失なし) です。詳細については、[「Amazon Aurora グローバルデータベースのスイッチオーバーの実行](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-disaster-recovery.html#aurora-global-database-disaster-recovery.managed-failover)」を参照してください。

`dr-orchestrator-stepfunction-FAILOVER` ステートマシンは*イベント状態*中に呼び出され、プライマリクラスターを選択したセカンダリリージョン () に切り替えます`us-west-2`。

スイッチオーバーを実行するには、次の手順を実行します。

1.  AWS マネジメントコンソールにサインインします。

1. リージョンを DR リージョン (`us-west-2`) に変更します。

1. **サービス** に移動し、**Step Functions **を選択します。

1. `dr-orchestrator-stepfunction-FAILOVER` ステートマシンに移動します。

1. **実行の開始 **を選択し、 `Input - optional`セクションに次の JSON コードを入力します。

   ```
   {
     "StatePayload": [
       {
         "layer": 1,
         "resources": [
           {
             "resourceType": "PlannedFailoverAurora",
             "resourceName": "Switchover (planned failover) of Amazon Aurora global databases (MySQL)",
             "parameters": {
               "GlobalClusterIdentifier": "!Import dr-globaldb-cluster-mysql-global-identifier",
               "DBClusterIdentifier": "!Import dr-globaldb-cluster-mysql-cluster-identifier" 
             }
           }
         ]
       }
     ]
   }
   ```

1. `dr-orchestrator-stepfunction-FAILOVER` ステートマシンはリソースタイプを `PlannedFailoverAuroraMySQ`L として読み取り、`dr-orchestrator-stepfunction-planned-Aurora-failover`ステートマシンを呼び出して Aurora グローバルデータベースをフェイルオーバーします。  
![のステートマシン図 PlannedFailoverAurora。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/automate-dr-solution-relational-database/images/dr-orchestrator-stepfunction-planned-aurora-failover.jpg)

1. `dr-orchestrator-stepfunction-planned-Aurora-failover` ステートマシンは次の手順を実行して、Aurora MySQL 互換グローバルデータベースロールを切り替えます。

     
![フェイルオーバーステータスをチェックするステートマシンの図。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/automate-dr-solution-relational-database/images/dr-orchestrator-stepfunction-planned-aurora-failover-switchover.jpg)    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/automate-dr-solution-relational-database/aurora-state-machines.html)

1. Amazon RDS コンソールに移動します。**ステータス** では、Aurora グローバルデータベースの値が**「利用可能**」から**「 の切り替え**」または**「 の変更**」に変わります。

1. `dr-orchestrator-stepfunction-planned-Aurora-failover` ステートマシンが完了すると、成功トークンを`dr-orchestrator-stepfunction-FAILOVER`ステートマシンに送り返します。

     
![成功トークンが送信されたことを示すステートマシン図。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/automate-dr-solution-relational-database/images/dr-orchestrator-stepfunction-FAILOVER.jpg)

1. `dr-orchestrator-stepfunction-FAILOVER` ステートマシンが完了しました。

     
![ステートマシンが完了したことを示すステートマシン図。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/automate-dr-solution-relational-database/images/dr-orchestrator-stepfunction-FAILOVER-completed.jpg)

コンソールでは、**セカンダリクラスター** (`dbcluster-02`) のロールが**プライマリクラスター **になり、クラスターは読み取り/書き込みワークロードを処理する準備が整いました。元のプライマリクラスター (`dbcluster-01`) のロールが**セカンダリクラスター **としてリストされるようになりました。

### 手動の計画外のフェイルオーバー
<a name="manual-failover"></a>

まれに、Aurora グローバルデータベースのプライマリ で予期しない停止が発生することがあります AWS リージョン。この場合、プライマリ Aurora DB クラスターとその読み取りノードを使用できなくなり、プライマリクラスターとセカンダリクラスター間のレプリケーションが停止します。ダウンタイム (RTO) とデータ損失 (RPO) の両方を最小限に抑えるには、迅速にクロスリージョンフェイルオーバーを実行し、Aurora グローバルデータベースを再構築します。詳細については、[「予期しない停止から Amazon Aurora グローバルデータベースを復旧](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-disaster-recovery.html#aurora-global-database-failover)する」を参照してください。

計画外のフェイルオーバーを実行するには、Aurora グローバルデータベースからセカンダリクラスターをデタッチする必要があります。計画外のフェイルオーバーを実行する前に、プライマリ Aurora DB クラスターでのアプリケーションの書き込みを停止します。フェイルオーバーが正常に完了したら、新しいプライマリ DB クラスターに書き込むようにアプリケーションを再設定します。このアプローチは、データ損失を防ぐのに役立ちます。また、フェイルオーバープロセス中にプライマリライターノードがオンラインに戻った場合に、データの不整合を回避するのにも役立ちます。

計画外のフェイルオーバーを実行するには、`dr-orchestrator-stepfunction-FAILOVER`ステートマシンを呼び出します。この例では、**セカンダリクラスター** (`db-cluster-02`*）*** **は DR リージョン (`us-west-2`) の定常状態にあります。

フェイルオーバーを実行するには、次の手順を実行します。

1.  コンソール にサインインします。

1. リージョンを DR リージョン (`us-west-2`) に変更します。

1. **サービス** に移動し、**Step Functions **を選択します。

1. `dr-orchestrator-stepfunction-FAILOVER` ステートマシンに移動します。

1. **実行の開始 を選択し**、 を `UnPlannedFailoverAurora`として使用して、 `Input - optional`セクションに次の JSON コードを入力します`resourceType`*。*

   ```
   {
     "StatePayload": [
       {
         "layer": 1,
         "resources": [
           {
             "resourceType": "UnPlannedFailoverAurora",
             "resourceName": "Performing unplanned failover for Amazon Aurora global databases (MySQL)",
             "parameters": {
               "GlobalClusterIdentifier": "!Import dr-globaldb-cluster-mysql-global-identifier",
               "DBClusterIdentifier": "!Import dr-globaldb-cluster-mysql-cluster-identifier",
               "ClusterRegion": "!Import dr-globaldb-cluster-mysql-cluster-region"
             }
           }
         ]
       }
     ]
   }
   ```

1. `dr-orchestrator-stepfunction-FAILOVER` ステートマシンはリソースタイプを として読み取り`UnPlannedFailoverAuroraMySQL`、`dr-orchestrator-stepfunction-unplanned-Aurora-failover`ステートマシン`Detach Cluster from Global Database`からタスクを呼び出します。

     
![リソースタイプ のステートマシン図 UnPlannedFailoverAurora。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/automate-dr-solution-relational-database/images/manual-unplanned-aurora-failover.jpg)

1. `Detach Cluster from Global Database` タスクは、グローバルデータベースからセカンダリクラスターをデタッチ (削除) します。

     
![クラスターをデタッチし、成功トークンを送信するためのステートマシン図。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/automate-dr-solution-relational-database/images/manual-detach-cluster-task.jpg)

1. セカンダリクラスター (`dbcluster-02`) はスタンドアロンクラスターに昇格され、読み取り/書き込みワークロードを処理できます。

1. `dr-orchestrator-stepfunction-FAILOVER` ステートマシンが完了しました。

     
![タスクが完了したことを示すステートマシン図。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/automate-dr-solution-relational-database/images/manual-failover-completed.jpg)

1. セカンダリクラスター (`dbcluster-02`) は Aurora グローバルデータベースからデタッチされ、読み取り/ライターワークロードを処理するスタンドアロンクラスターになります。

1. 新しいクラスターエンドポイントを使用して、この新しいスタンドアロン Aurora DB クラスターにすべての書き込みオペレーションを送信するようにアプリケーションを再設定します。

## フェイルバック
<a name="aurora-failback"></a>

障害 (またはスケジュールされたイベント) が解決されると、フェイルバックはデータベースを元の (または新しい) プライマリロケーションに返します。計画外の停止が解決されたら、以前のプライマリリージョンを Aurora グローバルデータベースに戻したい場合があります。まず、以前のプライマリリージョンから既存の DB クラスターを削除し、新しいプライマリリージョンから新しい DB クラスターを作成してから、管理された計画されたフェイルオーバープロセスを使用して新しいクラスターのロールを切り替える必要があります。

これは、オフピーク時または週末に実行できる計画されたアクティビティと見なすことができます。

ステートマシンは で作成されたため、以前のプライマリリージョン (`us-east-1`) から`DR Orchestrator FAILBACK`ステートマシンを実行する`DeletionProtection`** **前に、[Amazon Aurora DB クラスターを手動で変更](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Modifying.html)し、 を無効にする必要があります`DeletionProtection`。

DR Orchestrator Framework は、`dr-orchestrator-stepfunction-FAILBACK`ステートマシンを使用して既存のクラスターを削除し、以前のプライマリリージョンに新しいクラスターを作成するステップを自動化します。

を無効にするには`DeletionProtection`、次の手順を実行します。

1.  コンソール にサインインします。

1. リージョンを以前のプライマリリージョン () に変更します`us-east-1`。

1. Amazon RDS コンソールに移動し、クラスター名 (`dbcluster-01`) を選択し、 **の変更を選択します**。

1. **「削除保護**」で、**「削除保護を有効にする**」チェックボックスをオフにし、**「続行**」を選択します。

1. **すぐに適用 **を選択し、**クラスターの変更 **を選択します。

`DR Orchestrator FAILBACK` ステートマシンは、以前のプライマリリージョン () からのフェイルバックプロセス中に呼び出されます`us-east-1`。

フェイルバックを実行するには、次の手順を実行します。

1.  コンソール にサインインします。

1. リージョンを以前のプライマリリージョン () に変更します`us-east-1`。

1. **サービス** に移動し、**Step Functions **を選択します。

1. `DR Orchestrator FAILBACK` ステートマシンに移動します。

1. **実行の開始 **を選択し、 `Input - optional`セクションに次の JSON コードを入力します。

   ```
    {
     "StatePayload": [
       {
         "layer": 1,
         "resources": [
           {
             "resourceType": "CreateAuroraSecondaryDBCluster",
             "resourceName": "To create secondary Aurora MySQL Global Database Cluster",
             "parameters": {
               "GlobalClusterIdentifier": "!Import dr-globaldb-cluster-mysql-global-identifier",
               "DBClusterIdentifier": "!Import dr-globaldb-cluster-mysql-cluster-identifier",
               "DBClusterName": "!Import dr-globaldb-cluster-mysql-cluster-name",
               "SourceDBClusterIdentifier": "!Import dr-globaldb-cluster-mysql-source-cluster-identifier",
               "DBInstanceIdentifier": "!Import dr-globaldb-cluster-mysql-instance-identifier",
               "Port": "!Import dr-globaldb-cluster-mysql-port",
               "DBInstanceClass": "!Import dr-globaldb-cluster-mysql-instance-class",
               "DBSubnetGroupName": "!Import dr-globaldb-cluster-mysql-subnet-group-name",
               "VpcSecurityGroupIds": "!Import dr-globaldb-cluster-mysql-vpc-security-group-ids",
               "Engine": "!Import dr-globaldb-cluster-mysql-engine",
               "EngineVersion": "!Import dr-globaldb-cluster-mysql-engine-version",
               "KmsKeyId": "!Import dr-globaldb-cluster-mysql-KmsKeyId",
               "SourceRegion": "!Import dr-globaldb-cluster-mysql-source-region",
               "ClusterRegion": "!Import dr-globaldb-cluster-mysql-cluster-region",
               "BackupRetentionPeriod": "7",
               "MonitoringInterval": "60",
               "StorageEncrypted": "True",
               "EnableIAMDatabaseAuthentication": "True",
               "DeletionProtection": "True",
               "CopyTagsToSnapshot": "True",
               "AutoMinorVersionUpgrade": "True",
               "MonitoringRoleArn": "!Import rds-mysql-instance-RDSMonitoringRole"
             }
           }
         ]
       }
     ]
   }
   ```

1. `DR Orchestrator FAILBACK` ステートマシンはリソースタイプを として読み取り`CreateAuroraSecondaryDBCluster`、ステートマシンを`dr-orchestrator-stepfunction-create-Aurora-Secondary-cluster`呼び出します。

     
![リソースタイプを として示すステートマシン図 CreateAuroraSecondaryCluster。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/automate-dr-solution-relational-database/images/create-aurora-secondary-cluster.jpg)

1. `dr-orchestrator-stepfunction-create-Aurora-Secondary-cluster` ステートマシンは、以前のプライマリリージョン (`dbcluster-01`) から既存のクラスター () を削除します`us-east-1`。

     
![グローバルデータベースから既存のクラスターを削除するステートマシン図。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/automate-dr-solution-relational-database/images/delete-existing-aurora-cluster.jpg)

1. クラスター (`dbcluster-01`) が削除されると、ステートマシンは DB インスタンスとともに新しいクラスター (`dbcluster-01`) を作成し、Aurora グローバルデータベースをセカンダリクラスターとして結合して読み取り専用ワークロードを処理します。

     
![セカンダリデータベースクラスターの作成を示すステートマシン図。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/automate-dr-solution-relational-database/images/create-new-aurora-cluster.jpg)

1. セカンダリクラスターが使用可能になると、`dr-orchestrator-stepfunction-create-Aurora-Secondary-cluster`ステートマシンは完了し、成功トークンを`DR Orchestrator Failback`ステートマシンに送り返します。

     
![成功トークンが送信されたことを示すステートマシン。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/automate-dr-solution-relational-database/images/create-secondary-cluster-success-token.jpg)

1. `dr-orchestrator-stepfunction-FAILBACK` ステートマシンが完了しました。

     
![CreateAuroraSecondaryDBCluster のステートマシン図が完了しました。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/automate-dr-solution-relational-database/images/create-aurora-secondary-cluster-completed.jpg)

1. Aurora グローバルデータベースは、Amazon RDS コンソールで確認できます。

プライマリ DB クラスターを us-east-1 に再配置する場合は、[「スイッチオーバー](#switchover)」セクションで説明されている手順に従います。