ディザスタリカバリと Amazon DocumentDB グローバルクラスターについて - Amazon DocumentDB

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

ディザスタリカバリと Amazon DocumentDB グローバルクラスターについて

グローバルクラスターを使用すると、リージョンの障害などの災害から迅速に復旧できます。災害からの復旧は、通常、RTO と RPO (目標復旧時点) の値を使用して測定します。

  • 目標復旧時間 (RTO)– 災害後にシステムが稼働状態に戻るまでにかかる時間。つまり、RTO はダウンタイムを測定します。グローバルクラスターの場合、RTO は分単位です。

  • 目標復旧時点 (RPO) – 損失する可能性があるデータの量 (時間単位)。グローバルクラスターの場合、目標復旧時点 (RPO) は通常、秒単位で測定されます。

  • 予期しない停止から復旧するには、グローバルクラスター内のセカンダリの 1 つのクロスリージョンフェイルオーバーを実行できます。グローバルクラスターに複数のセカンダリリージョンがある場合、プライマリとして昇格させたいすべてのセカンダリリージョンをデタッチしてください。次に、これらのセカンダリリージョンの 1 つを新しいプライマリ AWS リージョン に昇格させます。最後に、他の各セカンダリリージョンに新しいクラスターを作成し、それらのクラスターをグローバルクラスターにアタッチします。

Amazon DocumentDB グローバルクラスターのマネージドフェイルオーバーの実行

このアプローチは、真の地域災害やサービスレベルの全面的な停止が発生した場合でも事業を継続できるようにするためのものです。

マネージドフェイルオーバー中、プライマリクラスターは選択したセカンダリリージョンにフェイルオーバーされ、お使いの Amazon DocumentDB グローバルクラスターの既存のレプリケーショントポロジが維持されます。選択したセカンダリクラスターは、読み取り専用ノードの 1 つを完全な読み取り状態に昇格します。このステップにより、クラスターがプライマリクラスターのロールを引き受けることができます。クラスターが新しいロールを引き受ける間、データベースは短時間使用できなくなります。古いプライマリクラスターから選択したセカンダリクラスターにレプリケートされなかったデータは、このセカンダリクラスターが新しいプライマリクラスターになると失われます。古いプライマリボリュームは、新しいプライマリと同期する前にスナップショットを取得するべく、レプリケートされていないデータがスナップショットに保持されるように最善を尽くします。

注記

プライマリクラスターとセカンダリクラスターがいずれも同じメジャー、マイナー、パッチレベルのエンジンバージョンである場合にのみ、Amazon DocumentDB グローバルクラスターへのマネージドクロスリージョンクラスターフェイルオーバーを実行できます。ただし、パッチレベルはマイナーエンジンバージョンによって異なる場合があります。ご使用のエンジンバージョンに互換性がない場合は、Amazon DocumentDB グローバルクラスターの手動フェイルオーバーの実行 の手順に従ってフェイルオーバーを手動で実行できます。

データの損失を最小限に抑えるため、この機能を使用する前に次のことを行うことをお勧めします。

  • 各アプリケーションをオフラインにして、Amazon DocumentDB グローバルクラスターのプライマリクラスターへの書き込みが送信されないようにします。

  • すべての Amazon DocumentDB セカンダリクラスターのラグタイムをチェックします。レプリケーションの遅延が最も少ないセカンダリリージョンを選択すると、現在障害が発生しているプライマリリージョンでのデータ損失を最小限に抑えることができます。Amazon CloudWatch 上で GlobalClusterReplicationLag メトリクスを確認して、グローバルクラスター内のすべての Amazon DocumentDB セカンダリクラスターのラグタイムを確認します。これらのメトリクスは、各セカンダリクラスターへのレプリケーションがプライマリクラスターに対してどの程度遅れているかをミリ秒単位で示します。

    Amazon DocumentDB 向け CloudWatch メトリクスの詳細については、「Amazon DocumentDB のメトリクス」を参照してください。

マネージドフェイルオーバー中、選択されたセカンダリクラスターは、プライマリとして新しいロールに昇格されます。ただし、プライマリクラスターのさまざまな設定オプションは引き継がれません。構成の不一致は、パフォーマンスの問題、ワークロードの非互換性、およびその他の異常な動作につながる可能性があります。このような問題を回避するには、Amazon DocumentDB グローバルクラスター間の次のような相違点を解消しておくことをお勧めします。

  • 新しいプライマリ向けに Amazon DocumentDB のクラスターパラメータグループを構成する (必要な場合) — Amazon DocumentDB グローバルクラスター内の各クラスターごとに、Amazon DocumentDB クラスターパラメータグループを構成できます。ただし、セカンダリクラスターを昇格してプライマリロールを引き継ぐ場合、セカンダリからのパラメータグループは、プライマリとは異なる設定になっている可能性があります。その場合は、昇格されたセカンダリクラスターのパラメータグループを、プライマリクラスターの設定に適合するように変更してください。この方法の詳細は、Amazon DocumentDB クラスターパラメータグループを変更するを参照してください。

  • 各種モニタリングツールやオプションを構成する (Amazon CloudWatch Events やアラームなど) - グローバルクラスターに必要なログ機能、アラームなどを使用して、昇格されたクラスターの設定を行います。パラメータグループと同様に、フェイルオーバープロセス中にこれらの機能の設定がプライマリから継承されることはありません。レプリケーションラグなどの一部の CloudWatch メトリクスは、セカンダリリージョンのみで使用できます。そのため、フェイルオーバーによってメトリクスの表示方法やアラームの設定方法が変わり、定義済みのダッシュボードを変更する必要が生じる場合があります。Amazon DocumentDB クラスターとモニタリングの詳細については、「Amazon DocumentDB のモニタリング」を参照してください。

通常、選択したセカンダリクラスターが数分以内に主要な役割を引き継ぎます。新しいプライマリリージョンのライターノードが使用可能になり次第、アプリケーションをそのライターノードに接続してワークロードを再開できます。Amazon DocumentDB が新しいプライマリクラスターを昇格させると、追加のセカンダリリージョンクラスターはすべて自動的にリビルドされます。

Amazon DocumentDB グローバルクラスターは非同期レプリケーションを使用するため、レプリケーションラグはセカンダリリージョンごとに異なる場合があります。これに対し Amazon DocumentDB は、これらのセカンダリリージョンを、新しいプライマリリージョンクラスターとまったく同じポイントインタイムデータを持つようにリビルドします。ストレージボリュームのサイズとリージョン間の距離によっては、再構築タスクが完了するまでに数分から数時間かかることがあります。セカンダリージョンのクラスターが新しいプライマリリージョンからの再構築を完了すると、読み取りアクセスが可能になります。新しいプライマリライターが昇格して使用可能になると、新しいプライマリリージョンのクラスターが、Amazon DocumentDB グローバルクラスターの読み取りおよび書き込みオペレーションを処理できるようになります。

グローバルクラスターの元のトポロジを復元するために、Amazon DocumentDB は古いプライマリリージョンの可用性を監視します。そのリージョンが再び正常な状態になり利用可能になるとすぐに、Amazon DocumentDB はそのリージョンをセカンダリリージョンとしてグローバルクラスターに自動的に追加します。古いプライマリリージョンに新しいストレージボリュームを作成する前に、Amazon DocumentDB は障害発生時の古いストレージボリュームのスナップショットを取得しようとします。これにより、欠落しているデータを回復することができます。このオペレーションが成功すると、Amazon DocumentDB は「rds:docdb-unplanned-global-failover-name-of-old-primary-DB-cluster-timestamp」という名前のスナップショットを AWS Management Consoleのスナップショットセクションに格納します。このスナップショットは、DescribeDBClusterSnapshots API オペレーションによって返される情報にもリストアップされます。

注記

古いストレージボリュームのスナップショットは、古い主クラスターに設定されたバックアップ保持期間の対象となるシステムスナップショットです。このスナップショットを保存期間外に保存するには、スナップショットをコピーして手動スナップショットとして保存できます。価格などのスナップショットのコピーの詳細については、「クラスタースナップショットのコピー」を参照してください。

元のトポロジを復元できたら、ビジネスとワークロードにとって最も都合のよいタイミングでスイッチオーバーオペレーションを実行することで、グローバルクラスターを元のプライマリリージョンにフェイルバックします。これを行うには、「Amazon DocumentDB グローバルクラスターのスイッチオーバーの実行」の手順を実行します。

AWS Management Console、AWS CLI、または Amazon DocumentDB API を利用して Amazon DocumentDB グローバルクラスターをフェイルオーバーすることができます。

Using the AWS Management Console

Amazon DocumentDB グローバルクラスターでマネージドフェイルオーバーを実行するには

  1. AWS Management Console にサインインし、Amazon DocumentDB コンソール https://console.aws.amazon.com/docdb を開きます。

  2. ナビゲーションペインで [クラスター] を選択します。

  3. フェイルオーバーしたい Amazon DocumentDB グローバルクラスターを選択します。

    イメージ: グローバルクラスターが選択されたクラスターテーブル。
  4. [アクション] メニューから [スイッチオーバーまたはフェイルオーバーする] を選択します。

  5. 表示されるダイアログボックスで、[フェイルオーバー] を選択し、[新しいプライマリクラスター] フィールドのドロップダウンリストからセカンダリクラスターを選択します。

    イメージ: グローバルクラスターの「スイッチオーバーまたはフェイルオーバーする」のダイアログボックス。
  6. 最後のフィールドに「confirm」 (確定する) とキー入力します。[Confirm] (確認) を選択します。

    プライマリクラスターのステータスが「フェイルオーバー」に変わります。この状態になるまでには約 1 分かかります。この間、新しいプライマリクラスターのステータスは「変更中」と表示されます。新しいプライマリが昇格されると、「利用可能」の表示に変わり、読み取りおよび書き込みトランザクションを処理できるようになります。古いプライマリを含むセカンダリリージョンは、「再同期中」と表示され、新しいプライマリに再同期されます。新しいプライマリと同様に、古いプライマリも、ステータスが「利用可能」に変わってからのみトランザクションの処理が可能となります。

  7. 完了すると、元のプライマリクラスターはセカンダリクラスターになります。選択したセカンダリクラスターがプライマリクラスターになります。

    イメージ: 新しいプライマリクラスターを示すクラスターテーブル。
Using the AWS CLI

Amazon DocumentDB グローバルクラスターでマネージドフェイルオーバーを実行するには

failover-global-cluster CLI コマンドを使用して、Amazon DocumentDB グローバルクラスターをフェイルオーバーします。コマンドを使用して、次のパラメータ値を渡します。

  • --region — Amazon DocumentDB グローバルクラスターのプライマリクラスターが実行されている AWS リージョン を指定します。

  • --global-cluster-identifier — Amazon DocumentDB グローバルクラスターの名前を指定します。

  • --target-db-cluster-identifier - Amazon DocumentDB グローバルクラスターのプライマリとして昇格する Amazon DocumentDB セカンダリクラスターの Amazon リソースネーム (ARN) を指定します。

  • --allow-data-loss — この操作がスイッチオーバーではなくフェイルオーバーであることを明示的に指定します。非同期レプリケーションコンポーネントがレプリケートされたすべてのデータをセカンダリリージョンに送信していない場合、フェイルオーバー操作によってデータの一部が失われる可能性があります。

Linux、macOS、Unix の場合:

aws docdb --region region_of_selected_secondary \ failover-global-cluster --global-cluster-identifier global_cluster_id \ --target-db-cluster-identifier arn_of_secondary_to_promote \ --allow-data-loss

Windows の場合:

aws docdb --region region_of_selected_secondary ^ failover-global-cluster --global-cluster-identifier global_cluster_id ^ --target-db-cluster-identifier arn_of_secondary_to_promote ^ --allow-data-loss

Amazon DocumentDB グローバルクラスターの手動フェイルオーバーの実行

特定の AWS リージョン でクラスター全体が使用不可になった場合は、グローバルクラスターの別のクラスターを昇格させて読み取り/書き込み機能を持たせることができます。

別の AWS リージョン にあるクラスターがプライマリクラスターとしてより適格であると判断される場合は、グローバルクラスターフェイルオーバー機能を手動で起動することができます。たとえば、特定のセカンダリクラスターの容量を増やして、プライマリクラスターに昇格させることもできます。あるいは、AWS リージョン 間のアクティビティのバランスの変化によっては、プライマリクラスターを別の AWS リージョン に切り替えるほうが書き込みオペレーションのレイテンシーが低くなることもあるでしょう。

次の手順では、Amazon DocumentDB グローバルクラスターのセカンダリクラスターの 1 つを昇格させる方法を説明します。

セカンダリクラスターを昇格させるには

  1. 停止状態の AWS リージョン で、プライマリクラスターに対して DML ステートメントおよびその他の書き込みオペレーションの発行を停止します。

  2. 新しいプライマリクラスターとして使用するセカンダリ AWS リージョン からクラスターを特定します。グローバルクラスターの 2 つ (またはそれ以上) のセカンダリ AWS リージョン がある場合は、ラグタイムが最も少ないセカンダリクラスターを選択します。

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

    グローバルクラスターからセカンダリクラスターを削除すると、プライマリからこのセカンダリへのレプリケーションが直ちに停止され、完全な読み取り/書き込み機能を備えたスタンドアロンのプロビジョニングクラスターへと昇格されます。停止しているリージョン内のプライマリクラスターに関連付けられたその他のセカンダリクラスターは引き続き利用可能で、アプリケーションからの呼び出しを受け付けることができます。また、リソースを使用することになります。グローバルクラスターを再作成するため、スプリットブレインなどの問題を回避するために、以下のステップで新しいグローバルクラスターを作成する前に、他のセカンダリクラスターを削除します。

    アタッチ解除の詳細なステップについては、Amazon DocumentDB グローバルクラスターからのクラスターの削除 を参照してください。

  4. このクラスターは、次のステップでリージョンを追加すると、新しいグローバルクラスターのプライマリクラスターになります。

  5. クラスターに AWS リージョン を追加します。これを行うと、プライマリからセカンダリへのレプリケーションプロセスがスタートされます。

  6. 必要に応じて、AWS リージョン を追加して、アプリケーションのサポートに必要なトポロジを再作成します。グローバルクラスター内 (スプリットブレインの問題) のクラスター間のデータの不整合を避けるために、これらの変更を行う前、最中、および後に、アプリケーションの書き込みが正しいクラスターに送信されていることを確認してください。

  7. 停止状態が解決されて元の AWS リージョン をプライマリクラスターとして再度割り当てる準備が完了したら、同じステップを逆に実行します。

  8. グローバルクラスターからセカンダリクラスターの 1 つを削除します。これにより、読み取り/書き込みトラフィックを提供できるようになります。

  9. 元の AWS リージョン のプライマリクラスターにすべての書き込みトラフィックをリダイレクトします。

  10. AWS リージョン を追加し、前と同じ AWS リージョン に、1 つまたは複数のセカンダリクラスターをセットアップします。

Amazon DocumentDB グローバルクラスターは AWS SDK を使用して管理できるため、ディザスタリカバリや事業継続計画のユースケースに合わせてグローバルクラスターフェイルオーバープロセスを自動化するソリューションを作成できます。そのようなソリューションの 1 つは、Apache 2.0 ライセンスに基づいてお客様に提供されており、こちらのツールリポジトリからアクセスできます。このソリューションは、エンドポイント管理に Amazon Route 53 を活用し、適切なイベントに基づいてトリガー可能な AWS Lambda 関数を提供します。

Amazon DocumentDB グローバルクラスターのスイッチオーバーの実行

スイッチオーバーを使用すると、プライマリクラスターのリージョンを定期的に変更できます。この機能は、運用メンテナンス、その他の計画された運用手順など、管理されたシナリオを対象としています。

スイッチオーバーを使用する一般的なユースケースは 3 つあります。

  • 特定の業界に課せられる「リージョナルローテーション」要件向け。たとえば、金融サービス規制では、ディザスタリカバリ手順が定期的に実施されるように、Tier-0 システムを別の地域に数か月間切り替えることが求められる場合があります。

  • マルチリージョンの「follow-the-sun」アプリケーション向け。たとえば、ある企業が、さまざまなタイムゾーンの営業時間に基づいて、さまざまなリージョンで低レイテンシーの書き込みを提供したいとします。

  • データ損失ゼロの方法として、フェイルオーバー後に元のプライマリリージョンにフェイルバックします。

注記

スイッチオーバーは、正常な Amazon DocumentDB グローバルクラスターでの使用向けに設計された機能です。計画外の停止から復旧するには、「Amazon DocumentDB グローバルクラスターの手動フェイルオーバーの実行」の該当する手順に従ってください。

スイッチオーバーを実行するには、エンジンのバージョンに応じて、パッチレベルを含め、ターゲットのセカンダリ DB クラスターがプライマリとまったく同じバージョンを実行している必要があります。詳しくは、「マネージドクロスリージョンスイッチオーバーおよびフェイルオーバーに対するパッチレベルの互換性」を参照してください。スイッチオーバーを開始する前に、グローバルクラスター内のエンジンバージョンをチェックして、マネージドクロスリージョンスイッチオーバーをサポートしていることを確認し、必要に応じてアップグレードしてください。エンジンバージョンが一致しない場合、Amazon DocumentDB はスイッチオーバークラスターへの呼び出しを自動的にブロックします。

スイッチオーバー中、Amazon DocumentDB は、グローバルクラスターの既存のレプリケーショントポロジを維持しながら、プライマリクラスターを選択されたセカンダリリージョンにスイッチオーバーします。なお、Amazon DocumentDB は、すべてのセカンダリリージョンクラスターがプライマリリージョンクラスターと完全に同期されるまで待ってからスイッチオーバープロセスを開始します。次に、プライマリリージョンの DB クラスターは読み取り専用になり、選択したセカンダリ DB クラスターは、読み取り専用ノードの 1 つを、フルライターステータスに昇格させます。このノードをライターに昇格させると、そのセカンダリクラスターがプライマリクラスターの役割を引き受けることができます。プロセスの開始時にはすべてのセカンダリクラスターがプライマリと完全に同期されているため、新しいプライマリはデータを失うことなく Amazon DocumentDB グローバルクラスターのオペレーションを継続できます。プライマリクラスターと選択したセカンダリクラスターが新しいロールを引き受ける間、短時間データベースが使用できなくなります。

アプリケーションの可用性を最適化するには、この機能を使用する前に、次の操作を行うことをお勧めします。

  • この操作は、ピーク時以外の、プライマリクラスターへの書き込みが最小限である時間帯に実行してください。

  • 各アプリケーションをオフラインにして、Amazon DocumentDB グローバルクラスターのプライマリクラスターへの書き込みが送信されないようにします。

  • Amazon CloudWatch 上で GlobalClusterReplicationLag メトリクスを確認して、グローバルクラスター内のすべての Amazon DocumentDB セカンダリクラスターのラグタイムを確認します。このメトリクスは、セカンダリクラスターへのレプリケーションがプライマリクラスターに対してどのくらい遅れているかをミリ秒単位でを示します。この値は、Amazon DocumentDB がスイッチオーバーを完了するのにかかる時間と完全に比例します。したがって、遅延値が大きいほど、スイッチオーバーにかかる時間は長くなります。

    Amazon DocumentDB 向け CloudWatch メトリクスの詳細については、「Amazon DocumentDB のメトリクス」を参照してください。

スイッチオーバー中、選択したセカンダリ DB クラスターは、プライマリとして新しいロールに昇格されます。ただし、プライマリ DB クラスターのさまざまな設定オプションは継承されません。構成の不一致は、パフォーマンスの問題、ワークロードの非互換性、およびその他の異常な動作につながる可能性があります。このような問題を回避するには、Amazon DocumentDB グローバルクラスター間の次のような相違点を解消しておくことをお勧めします。

  • 新しいプライマリ向けに Amazon DocumentDB のクラスターパラメータグループを構成する (必要な場合) — Amazon DocumentDB グローバルクラスター内の各クラスターごとに、Amazon DocumentDB クラスターパラメータグループを構成できます。つまり、セカンダリ DB クラスターを昇格してプライマリロールを引き継ぐ場合、セカンダリからのパラメータグループは、プライマリとは異なる設定になることがあります。その場合は、プロモートされたセカンダリ DB クラスターのパラメータグループを、プライマリクラスターの設定に適合するように変更します。この方法については、「Amazon DocumentDB クラスターパラメータグループの管理」を参照してください。

  • 各種モニタリングツールやオプションを構成する (Amazon CloudWatch Events やアラームなど) - グローバルクラスターに必要なログ機能、アラームなどを使用して、昇格されたクラスターの設定を行います。パラメータグループと同様に、スイッチオーバープロセス中にこれらの機能の設定がプライマリから継承されることはありません。レプリケーションラグなどの一部の CloudWatch メトリクスは、プライマリリージョンのみで使用できます。そのため、スイッチオーバーによってメトリクスの表示方法やアラームの設定方法が変わり、定義済みのダッシュボードを変更する必要が生じる場合があります。詳細については、「Amazon DocumentDB のモニタリング」を参照してください。

注記

通常、ロールスイッチオーバーには数分かかることがあります。

スイッチオーバープロセスが完了すると、昇格された Amazon DocumentDB クラスターはグローバルクラスターへの書き込みオペレーションを処理できるようになります。

Amazon DocumentDB グローバルクラスターのスイッチオーバ―には、AWS Management Consoleまたは AWS CLI を使用します。

Using the AWS Management Console

Amazon DocumentDB グローバルクラスターでスイッチオーバーを実行するには

  1. AWS Management Console にサインインし、Amazon DocumentDB コンソール https://console.aws.amazon.com/docdb を開きます。

  2. ナビゲーションペインで [クラスター] を選択します。

  3. スイッチオーバーしたい Amazon DocumentDB グローバルクラスターを検索して選択します。

    イメージ: グローバルクラスターが選択されたクラスターテーブル。
  4. [アクション] メニューから [スイッチオーバーまたはフェイルオーバーする] を選択します。

  5. 表示されるダイアログボックスで、[スイッチオーバー] を選択し、[新しいプライマリクラスター] フィールドのドロップダウンリストからセカンダリクラスターを選択します。

    イメージ: セカンダリクラスターが選択されたクラスタースイッチオーバーダイアログ。
  6. [確認] を選択します。

    プライマリクラスターのステータスが「スイッチオーバー中」に変わります。この状態になるまでには約 3 分かかります。この間、すべてのリージョンクラスターのステータスは「変更中」と表示されます。すべてのリージョンが同期され、新しいプライマリが昇格されると、すべてのステータスフィールドの表示が「利用可能」となり、トランザクションを処理できるようになります。

  7. 完了すると、元のプライマリクラスターはセカンダリクラスターになります。選択したセカンダリクラスターがプライマリクラスターになります。

    イメージ: 新しいプライマリクラスターを示すクラスターテーブル。
Using the AWS CLI

Amazon DocumentDB グローバルクラスターでスイッチオーバーを実行するには

switchover-global-cluster CLI コマンドを使用して、Amazon DocumentDB グローバルクラスターをスイッチオーバーします。コマンドを使用して、次のパラメータ値を渡します。

  • --region — Amazon DocumentDB グローバルクラスターのプライマリクラスターが実行されている AWS リージョン を指定します。

  • --global-cluster-identifier — Amazon DocumentDB グローバルクラスターの名前を指定します。

  • --target-db-cluster-identifier - Amazon DocumentDB グローバルクラスターのプライマリとして昇格する Amazon DocumentDB セカンダリクラスターの Amazon リソースネーム (ARN) を指定します。

Linux、macOS、Unix の場合:

aws docdb --region region_of_primary \ switchover-global-cluster --global-cluster-identifier global_cluster_id \ --target-db-cluster-identifier arn_of_secondary_to_promote

Windows の場合:

aws docdb --region region_of_primary ^ switchover-global-cluster --global-cluster-identifier global_cluster_id ^ --target-db-cluster-identifier arn_of_secondary_to_promote