AWS DMS と Amazon Aurora によるクロスリージョンディザスタリカバリの実装 - AWS 規範ガイダンス

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

AWS DMS と Amazon Aurora によるクロスリージョンディザスタリカバリの実装

作成者: Mark Hudson (AWS)

環境:本稼働

テクノロジー: データベース

AWS サービス: AWS DMS、Amazon RDS、Amazon Aurora

[概要]

自然災害または人為的災害はいつでも発生する可能性があり、特定の Amazon Web Services (AWS) リージョンで実行されているサービスとワークロードの可用性に影響を与える可能性があります。リスクを軽減するには、 AWS サービスの組み込みのクロスリージョン機能を組み込むディザスタリカバリ (DR) 計画を策定する必要があります。本質的にクロスリージョン機能を提供しないAWSサービスの場合、DR プランはAWSリージョン間でのフェイルオーバーを処理するソリューションも提供する必要があります。

このパターンは、1 つのリージョンに 2 つの Amazon Aurora My SQL-Compatible Edition データベースクラスターを含むディザスタリカバリ設定をガイドします。DR 要件を満たすために、データベースクラスターは Amazon Aurora グローバルデータベース機能を使用するように設定され、1 つのデータベースが複数のAWSリージョンにまたがっています。AWS Database Migration Service (AWS DMS) タスクは、ローカルリージョンのクラスター間でデータをレプリケートします。AWS ただしDMS、現在、 はリージョン間のタスクフェイルオーバーをサポートしていません。このパターンには、この制限を回避し、両方のリージョンAWSDMSで個別に設定するために必要なステップが含まれています。

前提条件と制限

前提条件

機能制限

製品バージョン

  • Amazon Aurora My SQL互換エディション 5.7 または 8.0。詳細については、「Amazon Auroraバージョン」を参照してください。

アーキテクチャ

ターゲットテクノロジースタック

  • Amazon Aurora My SQL-Compatible Edition グローバルデータベースクラスター

  • AWS DMS

ターゲット アーキテクチャ

次の図は、2 つのAWSリージョンのグローバルデータベースを示しています。1 つはプライマリメインデータベースとレポーターデータベースとAWSDMSレプリケーション、もう 1 つはセカンダリメインデータベースとレポーターデータベースです。

クロスリージョングローバルデータベースのアーキテクチャ図。

自動化とスケール

AWS CloudFormation を使用して、仮想プライベートクラウド (VPC)、サブネット、パラメータグループなどの前提条件インフラストラクチャをセカンダリリージョンに作成できます。AWS CloudFormation を使用して DR リージョンにセカンダリクラスターを作成し、グローバルデータベースに追加することもできます。 CloudFormation テンプレートを使用してプライマリリージョンにデータベースクラスターを作成した場合は、追加のテンプレートでテンプレートを更新または拡張して、グローバルデータベースリソースを作成できます。詳細については、「2 つの DB インスタンスを持つ Amazon Aurora DB クラスターの作成」と「Aurora My 用のグローバルデータベースクラスターの作成SQL」を参照してください。

最後に、フェイルオーバーイベントとフェイルバックイベントが発生した CloudFormation 後に を使用して、プライマリリージョンとセカンダリリージョンにAWSDMSタスクを作成できます。詳細については、AWS「::DMS::ReplicationTask」を参照してください。

ツール

  • Amazon Aurora - Amazon Aurora は、MySQL および Postgre と互換性のあるフルマネージドリレーショナルデータベースエンジンですSQL。このパターンでは、Amazon Aurora My SQL互換エディションを使用します。

  • Amazon Aurora Global Database - Amazon Aurora Global Databaseは、グローバルに分散されたアプリケーション向けに設計されています。1 つの Amazon Aurora グローバルデータベースは、複数のAWSリージョンにまたがることができます。データベースのパフォーマンスに影響を与えずにデータを複製します。また、各リージョンで低レイテンシーで高速なローカル読み取りが可能になり、リージョン全体の障害からのディザスタリカバリが可能になります。

  • AWS DMS - AWS Database Migration Service (AWS DMS) は、1 回限りの移行または継続的なレプリケーションを提供します。継続的なレプリケーションタスクにより、ソースデータベースとターゲットデータベースの同期が保たれます。セットアップ後、進行中のレプリケーションタスクはソースの変更を最小限のレイテンシーでターゲットに継続的に適用します。データ検証や変換などのすべてのAWSDMS機能は、レプリケーションタスクで使用できます。

エピック

タスク説明必要なスキル

データベースクラスターパラメータグループを変更します。

既存のデータベースクラスターパラメータグループで、binlog_formatパラメータを「」の値に設定して行レベルのバイナリロギングを有効にします。

AWS DMS では、継続的なレプリケーションまたはデータキャプチャの変更を実行する際に、MYSQL互換性のあるデータベースの行レベルのバイナリログ記録が必要です (CDC)。詳細については、「 のソースとして AWSマネージド My SQL互換データベースを使用する」を参照してくださいAWSDMS

AWS 管理者

データベースのバイナリログの保持期間を更新します。

エンドユーザーデバイスまたは Amazon Elastic Compute Cloud (Amazon EC2) インスタンスにインストールされた MySQL クライアントを使用して、メインデータベースクラスターのライターノードで Amazon Relational Database Service (Amazon RDS) が提供する以下のストアドプロシージャを実行します。ここで、 XXはログを保持する時間数です。

call mysql.rds_set_configuration('binlog retention hours', XX)

次のコマンドを実行してこの設定を確認します。

call mysql.rds_show_configuration;

バイナリログをできるだけ早くAWS消去することで管理される SQL互換データベース。したがって、保持期間は、AWSDMSタスクの実行前にログが消去されないように十分な長さである必要があります。通常 24 時間の値は十分ですが、値は DR リージョンでAWSDMSタスクを設定するために必要な時間に基づいている必要があります。

DBA
タスク説明必要なスキル

AWS DMS タスク を記録しますARN。

Amazon リソースネーム (ARN) を使用して、後で使用するためにAWSDMSタスク名を取得します。AWS DMS タスク を取得するにはARN、コンソールでタスクを表示するか、次のコマンドを実行します。

aws dms describe-replication-tasks

ARN は次のようになります。

arn:aws:dms:us-east-1:<accountid>:task:AN6HFFMPM246XOZVEUHCNSOVF7MQCLTOZUIRAMY

最後のコロンの後の文字は、後のステップで使用されるタスク名に対応しています。

AWS 管理者

チェックポイントを記録するように既存のAWSDMSタスクを変更します。

AWS DMS は、レプリケーションエンジンが変更ストリームの復旧ポイントを認識できるように、情報を含むチェックポイントを作成します。チェックポイント情報を記録するには、コンソールで次のステップを実施します。

  1. AWS DMS タスクを停止します。

  2. タスクの JSON エディタを使用して、 TaskRecoveryTableEnabled パラメータを true に設定します。

  3. AWS DMS タスクを開始します。

AWS 管理者

チェックポイント情報を検証します。

クラスターのライターエンドポイントに接続された MySQL クライアントを使用して、レポーターデータベースクラスター内の新しいメタデータテーブルをクエリして、レプリケーション状態情報が存在し、含まれていることを確認します。以下のコマンドを実行します。

select * from awsdms_control.awsdms_txn_state;

のタスク名ARNは、Task_Name列のこのテーブルにあります。

DBA
タスク説明必要なスキル

DR リージョンに基本インフラを作成します。

Amazon Aurora クラスターの作成とアクセスに必要な基本コンポーネントを作成します。

  • 仮想プライベートクラウド (VPC)

  • サブネット

  • セキュリティグループ

  • ネットワークアクセスコントロールリスト

  • サブネットグループ

  • DB パラメータグループ

  • DB クラスターのパラメータグループ

両方のパラメータグループの設定がプライマリリージョンの設定と一致していることを確認します。

AWS 管理者

両方の Amazon Aurora クラスターに DR リージョンを追加します。

メインクラスターとレポーターの Amazon Aurora クラスターにセカンダリージョン (DR リージョン) を追加します。詳細については、「Amazon Aurora グローバルデータベースへのAWSリージョンの追加」を参照してください。

AWS 管理者
タスク説明必要なスキル

AWS DMS タスクを停止します。

フェイルオーバーが発生すると、プライマリリージョンのAWSDMSタスクは正常に機能せず、エラーを避けるために停止する必要があります。

AWS 管理者

マネージドフェイルオーバーを実行してください。

メインデータベースクラスターの DR リージョンへのマネージドフェイルオーバーを実行します。詳細については、「Amazon Aurora Global Databaseのマネージドプラン済みフェイルオーバーを実行」を参照してください。メインデータベースクラスターのフェイルオーバーが完了したら、レポーターデータベースクラスターで同じアクティビティを実行します。

AWS 管理者 DBA

メインデータベースにデータをロードします。

DR データベースクラスター内のメインデータベースのライターノードにテストデータを挿入します。このデータは、レプリケーションが正常に機能していることを確認するために使用されます。

DBA

AWS DMS レプリケーションインスタンスを作成します。

DR リージョンでAWSDMSレプリケーションインスタンスを作成するには、「レプリケーションインスタンスの作成」を参照してください。

AWS 管理者 DBA

AWS DMS ソースエンドポイントとターゲットエンドポイントを作成します。

DR リージョンでAWSDMSソースエンドポイントとターゲットエンドポイントを作成するには、「ソースエンドポイントとターゲットエンドポイントの作成」を参照してください。ソースは、メインデータベースクラスターのライターインスタンスを指している必要があります。ターゲットは、Reporter Database クラスターのライターインスタンスを指します。

AWS 管理者 DBA

レプリケーションチェックポイントを取得します。

レプリケーションチェックポイントを取得するには、My SQLクライアントを使用して、DR リージョンのレポーターデータベースクラスターのライターノードに対して以下を実行してメタデータテーブルをクエリします。

select * from awsdms_control.awsdms_txn_state;

テーブルで、2 番目のエピックで取得したプライマリリージョンARNに存在するAWSDMSタスクに対応する task_name 値を見つけます。

DBA

AWS DMS タスクを作成します。

コンソールを使用して、DR リージョンにAWSDMSタスクを作成します。タスクでは、「データ変更のみ複製」の移行方法を指定します。詳細については、「タスクの作成」を参照してください。 

  1. タスク設定で、ウィザードを使用して以下を指定します。

    • CDC ソーストランザクションの開始モード – カスタムCDC開始モードを有効にする

    • ソーストランザクションのカスタムCDC開始点 – 復旧チェックポイントを指定する

  2. リカバリチェックポイント」ボックスに、awsdms_txn_stateテーブルのデータベースクエリによって以前に取得したレプリケーションチェックポイント値を入力します。 

  3. タスク設定セクションで、JSONエディタを選択し、 TaskRecoveryTableEnabledパラメータを true に設定します。 

AWS DMS タスク 移行タスク設定の開始 を、 の作成時に自動的にに設定します。

AWS 管理者 DBA

AWS DMS タスク を記録しますARN。

ARN を使用して、後で使用するためにAWSDMSタスク名を取得します。AWS DMS タスク を取得するにはARN、次のコマンドを実行します。

aws dms describe-replication-tasks
AWS 管理者 DBA

複製されたデータを検証します。

DR リージョンのレポーターデータベースクラスターにクエリを実行して、メインデータベースクラスターに読み込んだテストデータが複製されていることを確認します。

DBA
タスク説明必要なスキル

AWS DMS タスクを停止します。

DR リージョンのAWSDMSタスクは、フェイルバックの発生後に正しく機能しないため、エラーを避けるために停止する必要があります。

AWS 管理者

マネージドフェイルバックを実行してください。

メインデータベースクラスターをプライマリリージョンにフェイルバックします。詳細については、「Amazon Aurora Global Databaseのマネージドプラン済みフェイルオーバーを実行」を参照してください。メインデータベースクラスターのフェイルバックが完了したら、レポーターデータベースクラスターで同じアクティビティを実行します。

AWS 管理者 DBA

レプリケーションチェックポイントを取得します。

レプリケーションチェックポイントを取得するには、My SQLクライアントを使用して、DR リージョンのレポーターデータベースクラスターのライターノードに対して以下を実行してメタデータテーブルをクエリします。

select * from awsdms_control.awsdms_txn_state;

テーブルで、4 番目のエピックで取得した DR リージョンARNに存在するAWSDMSタスクに対応するtask_name値を見つけます。

DBA

AWS DMS ソースエンドポイントとターゲットエンドポイントを更新します。

データベースクラスターがフェイルバックしたら、プライマリリージョンのクラスターをチェックして、どのノードがライターインスタンスであるかを判断します。次に、プライマリリージョンの既存のAWSDMSソースエンドポイントとターゲットエンドポイントがライターインスタンスを指していることを確認します。そうでない場合は、ライターインスタンスのドメインネームシステム (DNS) 名でエンドポイントを更新します。

AWS 管理者

AWS DMS タスクを作成します。

コンソールを使用して、プライマリリージョンにAWSDMSタスクを作成します。タスクでは、「データ変更のみ複製」の移行方法を指定します。詳細については、「タスクの作成」を参照してください。 

  1. タスク設定で、ウィザードを使用して以下を指定します。

    • CDC ソーストランザクションの開始モード – カスタムCDC開始モードを有効にする

    • ソーストランザクションのカスタムCDC開始点 – 復旧チェックポイントを指定する

  2. リカバリチェックポイント」ボックスに、 awsdms_txn_stateテーブルのデータベースクエリによって以前に取得したレプリケーションチェックポイント値を入力します。 

  3. また、タスク設定セクション内でJSONエディタを選択し、パラメータをTaskRecoveryTableEnabled true に設定します。

  4. 最後に、AWSDMSタスク移行タスク設定の開始の作成時に自動に設定します。

AWS 管理者 DBA

AWS DMS タスク Amazon リソースネーム () を記録しますARN。

ARN を使用して、後で使用するためにAWSDMSタスク名を取得します。AWS DMS タスク を取得するにはARN、次のコマンドを実行します。

aws dms describe-replication-tasks

タスク名は、別のマネージドフェイルオーバーを実行するときや DR シナリオ中に必要になります。

AWS 管理者 DBA

AWS DMS タスクを削除します。

プライマリリージョンの元の (現在停止している) AWSDMSタスクと、セカンダリリージョンの既存のAWSDMSタスク (現在停止している) を削除します。

AWS 管理者

関連リソース

追加情報

この例では、Amazon Aurora グローバルデータベースが DR に使用されます。これは、1 秒の有効な復旧時間目標 (RTO) と 1 分未満の復旧ポイント目標 (RPO) を提供し、どちらも従来のレプリケートされたソリューションよりも低く、DR シナリオに最適です。

Amazon Aurora Global Databaseには、他にも次のような多くの利点があります。

  • ローカルレイテンシーによるグローバル読み取り — 世界中の消費者は、ローカルリージョンの情報にローカルレイテンシーでアクセスできます。

  • スケーラブルなセカンダリ Amazon Aurora DB クラスター — セカンダリクラスターは個別にスケーリングでき、最大 16 の読み取り専用レプリカを追加できます。

  • プライマリからセカンダリの Amazon Aurora DB クラスターへの迅速なレプリケーション-Aurora Global Database によるレプリケーションは、プライマリ DB クラスターのパフォーマンスにほとんど影響しません。これはストレージレイヤーで発生し、クロスリージョンレプリケーションのレイテンシーは通常 1 秒未満です。

このパターンはAWSDMSレプリケーションにも を使用します。Amazon Aurora データベースにはリードレプリカを作成できるため、レプリケーションプロセスと DR セットアップを簡素化できます。ただし、 AWSDMSは、データ変換が必要な場合や、ターゲットデータベースにソースデータベースにない追加のインデックスが必要な場合にレプリケートするために使用されます。