

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

# Amazon Neptune ディザスタリカバリの実行
<a name="neptune-gdb-disaster-recovery"></a>

Neptune グローバルデータベースは、スタンドアロン Neptune DB クラスターよりも包括的なフェイルオーバー機能を提供します。グローバルデータベースを使用することにより、災害に対する計画と復旧をかなり迅速に実行できます。ディザスタリカバリは、一般に、目標復旧時間 (RTO) と目標復旧時点 (RPO) の評価を使用して評価されます。
+ **目標復旧時間 (RTO)** — 災害後にシステムが稼働状態に戻るまでの時間。つまり、RTO はダウンタイムを測定します。Neptune グローバルデータベースの場合、RTO は分単位で行えます。
+ **目標復旧時点 (RPO)** — データが失われる時間の長さ。Neptune グローバルデータベースの場合、RPO は通常、秒単位で測定されます (「[Neptune グローバルデータベースの管理された計画的なフェイルオーバーを実行する](#neptune-gdb-managed-failover)」を参照)。

Neptune グローバルデータベースの場合、フェイルオーバーに対して 2 つの異なるアプローチがあります。
+ **デタッチと昇格 (手動の計画外の回復)** — 計画外の停止から回復したり、ディザスタリカバリテスト (DR テスト) を行うには、グローバルデータベース内のセカンダリ DB クラスターの 1 つでクロスリージョンデタッチと昇格を実行します。この手動プロセスの RTO (目標復旧時間) は、[デタッチと昇格](#neptune-gdb-detach-and-promote) に示すタスクの実行速度によって異なります。RPO は、通常、秒単位ですが、これは障害発生時のネットワーク経由でのストレージレプリケーションの遅延によって異なります。
+ **管理された計画的フェイルオーバー** — このアプローチは、グローバルデータベースのプライマリ DB クラスターをセカンダリリージョンのいずれかに移転するなど、運用保守やその他の計画的な運用手順を目的としています。このプロセスは、他の変更を行う前にセカンダリ DB クラスターとプライマリクラスターを同期するため、RPO は事実上 0 です (すなわち、データ損失はありません)。「[Neptune グローバルデータベースの管理された計画的なフェイルオーバーを実行する](#neptune-gdb-managed-failover)」を参照してください。

## 計画外の停止に備えて Neptune グローバルデータベースをデタッチして昇格する
<a name="neptune-gdb-detach-and-promote"></a>

Neptune グローバルデータベースのプライマリで予期しない停止が発生した場合 AWS リージョン、プライマリ Neptune DB クラスターとそのライターノードが使用できなくなり、プライマリクラスターとセカンダリ間のレプリケーションが停止します。ダウンタイム (RTO) とデータ損失 (RPO) の両方を最小限に抑えるには、リージョン間のデタッチと昇格を迅速に行って、グローバルデータベースを再構築します。

**ヒント**  
使用する前に、このプロセスを理解し、リージョン全体の問題が最初に発生したらすぐに処理を進めるための計画を立てておくとよいでしょう。  
フェイルオーバーが必要な場合にラグタイムが最も少ないセカンダリリージョンを特定できるように、Amazon CloudWatch を定期的に使用して、セカンダリクラスターのラグタイムを追跡します。
プランのテストをして、手順が完全かつ正確であることを確認します。
シミュレートされた環境を使用して、スタッフがトレーニングを受け、必要になった場合に DR フェイルオーバーを迅速に実行できるよう準備されていることを確認します。

**プライマリリージョンで予期しない停止が発生した後にセカンダリクラスターにフェイルオーバーするには**

1. プライマリ DB クラスターでのミューテーションクエリやその他の書き込み操作の発行を停止します。

1. グローバルデータベースの新しいプライマリ DB クラスター AWS リージョン として使用するセカンダリの DB クラスターを特定します。グローバルデータベースに 2 つ以上のセカンダリ AWS リージョンがある場合、遅延時間が最も少ないセカンダリクラスターを選択します。

1. 選択したセカンダリ DB クラスターを Neptune グローバルデータベースからデタッチします。

   Neptune グローバルデータベースからセカンダリ DB クラスターを削除すると、プライマリからこのセカンダリへのレプリケーションが直ちに停止し、完全な読み取り/書き込み機能を備えたスタンドアロンの DB クラスターに昇格します。グローバルデータベース内の他のセカンダリクラスターは引き続き使用可能で、アプリケーションからの読み取り呼び出しを受け入れることができます。

   Neptune グローバルデータベースを再作成する前に、クラスター間のデータの不整合を避けるために、他のセカンダリクラスターもデタッチする必要があります (「[クラスターの削除](neptune-gdb-detaching.md)」を参照)。

1. 新しいプライマリクラスターとして選択したスタンドアロン Neptune DB クラスターに、新しいエンドポイントを使用して、すべての書き込み操作を送信するように、アプリケーションを再設定します。Neptune グローバルデータベースの作成時にデフォルトの名前を受け入れた場合は、アプリケーションでクラスターのエンドポイント文字列から `-ro` を削除することで、エンドポイントを変更できます。

   例えば、セカンダリクラスターのエンドポイント `my-global.cluster-ro-aaaaaabbbbbb.us-west-1.neptune.amazonaws.com` は、そのクラスターがグローバルデータベースからデタッチされたときに `my-global.cluster-aaaaaabbbbbb.us-west-1.neptune.amazonaws.com` になります。

   この Neptune DB クラスターは、次の手順でリージョンの追加を開始すると、新しい Neptune グローバルデータベースのプライマリクラスターになります。

1. DB クラスター AWS リージョン に を追加します。これを行うと、プライマリからセカンダリへのレプリケーションプロセスがスタートされます。「[Amazon Neptune のプライマリリージョンにセカンダリグローバルデータベースリージョンを追加する](neptune-gdb-setup.md#neptune-gdb-attaching)」を参照してください。

1. 必要に応じて を追加して AWS リージョン 、アプリケーションをサポートするために必要なトポロジを再作成します。

これらの変更を行う前、変更中、および変更後に、アプリケーションの書き込みが正しい Neptune DB クラスターに送信されていることを確認してください。これにより、Neptune グローバルデータベース内の DB クラスター間のデータの不整合 (スプリットブレイン問題) が回避されます。

## Neptune グローバルデータベースの管理された計画的なフェイルオーバーを実行する
<a name="neptune-gdb-managed-failover"></a>

マネージド計画フェイルオーバーを使用すると、Neptune グローバルデータベースのプライマリクラスターを、選択した AWS リージョン たびに別の に再配置できます。組織によっては、プライマリクラスターの位置を定期的にローテーションしたい場合があります。

**注記**  
ここで説明されている管理された計画的フェイルオーバープロセスは、正常な Neptune グローバルデータベースでの使用を目的としています。予期しない停止から復旧したり、ディザスタリカバリ (DR) のテストをしたりするには、代わりに[デタッチと昇格](#neptune-gdb-detach-and-promote)プロセスに従ってください。

管理された計画的フェイルオーバー中、プライマリクラスターは選択したセカンダリリージョンにフェイルオーバーされ、グローバルデータベースの既存のレプリケーショントポロジが維持されます。管理された計画的フェイルオーバープロセスを開始する前に、グローバルデータベースはすべてのセカンダリクラスターをプライマリクラスターと同期します。すべてのクラスターが同期したことを確認すると、管理された計画的なフェイルオーバーがスタートします。プライマリリージョンの DB クラスターは読み取り専用になり、選択したセカンダリクラスターは、読み取り専用インスタンスの 1 つを完全なライターステータスに昇格して、クラスターがプライマリクラスターのロールを引き受けることができます。プロセスの開始時にすべてのセカンダリクラスターがプライマリと同期されているため、新しいプライマリは、データを失うことなく、 グローバルデータベースの操作を続行します。プライマリクラスターと選択したセカンダリクラスターが新しいロールを引き受ける間、短時間だけ、データベースは使用できなくなります。

アプリケーションの可用性を最適化するには、ピーク時以外の、プライマリ DB クラスターへの書き込みが最小限のときに、フェイルオーバーを実行します。また、フェイルオーバーの開始前に次のステップを実行します。
+ プライマリクラスターへの書き込みを減らすために、できる限りアプリケーションをオフラインにします。
+ グローバルデータベース内のすべてのセカンダリ Neptune DB クラスターのラグタイムを確認し、全体のラグタイムが最も短いセカンダリを選択してプライマリにします。Amazon CloudWatch を使用して、すべてのセカンダリに対する `NeptuneGlobalDBProgressLag` メトリクスを表示します。このメトリクスは、セカンダリがプライマリ DB クラスターからどのくらい遅れているか (ミリ秒単位) を示します。その値は、Neptune がフェイルオーバーの完了までにかかる時間に正比例します。つまり、ラグ値が大きいほどフェイルオーバー停止時間が長くなるため、ラグの少ないセカンダリを選択してください。詳細については「[Neptune CloudWatch メトリクス](cw-metrics.md)」を参照してください。

管理された計画的フェイルオーバー中、選択したセカンダリ DB クラスターは、プライマリとしての新しいロールに昇格されますが、プライマリ DB クラスターの完全な設定を継承するわけではありません。構成の不一致は、パフォーマンスの問題、ワークロードの非互換性、およびその他の異常な動作につながる可能性があります。このような問題を回避するには、フェイルオーバーの前に、グローバルデータベースクラスター間の次のような設定の違いを解決してください。
+ **新しいプライマリのパラメータを、現在のプライマリのパラメータと一致するように設定します**。
+ **監視ツール、オプション、アラームの設定** — 新しいプライマリとなる DB クラスターに、現在のプライマリと同じロギング機能、アラームなどを設定します。
+ **他の AWS サービスとの統合を設定する**   — Neptune グローバルデータベースが AWS Identity and Access Management (IAM)、Amazon   S3、 などの AWS サービスと統合されている場合は AWS Lambda、これらが必要に応じて新しいプライマリ DB クラスターと統合されるように設定されていることを確認してください。 Amazon S3

フェイルオーバープロセスが完了し、昇格した DB クラスターがグローバルデータベースの書き込み操作を処理できるようになったら、新しいプライマリの新しいエンドポイントを使用するようにアプリケーションを変更してください。

### を使用してマネージド計画フェイルオーバー AWS CLI を開始する
<a name="neptune-gdb-managed-failover-cli"></a>

[failover-global-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/failover-global-cluster.html) CLI コマンド ([FailoverGlobalCluster](api-global-dbs.md#FailoverGlobalCluster) API をラップする) を使用して、Neptune グローバルデータベースをフェイルオーバーします。

```
aws neptune failover-global-cluster \
  --region (the region where the primary cluster is located) \
  --global-cluster-identifier (global database ID) \
  --target-db-cluster-identifier (the ARN of the secondary DB cluster to promote)
```