Amazon Web Services ブログ

Amazon Aurora Global Database を使った Aurora PostgreSQL 災害復旧ソリューション



Amazon Aurora (PostgreSQL 互換) は、高性能商用データベースのパフォーマンスと可用性、そしてオープンソースデータベースのシンプルさとコスト効率性を兼ね備えています。Aurora は、同じリージョン内の 3 つのアベイラビリティーゾーンにストレージをスケールすることでこれを実現し、単一リージョン内で読み込みワークロードと高可用性をスケールアウトするために最大 15 個のリードレプリカをサポートします。Amazon Aurora Global Database では、リージョン全体で障害が発生した場合におけるリモート読み込みアクセスと災害復旧のために、最大 5 つのリージョンに PostgreSQL データベースをレプリケートできるようになりました。

Aurora は、保護グループと呼ばれる 10 GB の論理ブロックにストレージボリュームを構築しています。Aurora は、同じリージョン内の 3 つのアベイラビリティーゾーン (AZ) にまたがって割り当てられている 6 個のストレージノード (AZ ごとに 2 個) 全体に各保護グループをレプリケートします。データのボリュームが現在割り当てられているストレージを超えると、Aurora は必要に応じて新しい保護グループを追加することによってボリュームを拡大し、需要を満たします。

Aurora Global Database とは?

複数のリージョンにまたがる Aurora Global Database は、リージョン全体の障害からの災害復旧を実現し、最も近い位置にある Aurora クラスターからの読み込みを許可することによって、低レイテンシーのグローバル読み込みを可能にします。

Aurora の機能として、Global Database は Aurora のストレージレイヤーにある専用のインフラストラクチャを使用して、リージョン間のレプリケーションを処理します。レプリケーションはストレージレイヤー内の専用レプリケーションサーバーが処理するため、データベースのパフォーマンスを損なうことなく高度な復旧および可用性目標を達成できます。

PostgreSQL の論理レプリケーションと、Aurora Global Database が使用するストレージベースのレプリケーションには、重要な違いがいくつか存在します。論理レプリケーションは、レプリケーションソース (プライマリ) のデータ変更ステートメントまたは行の変更を記録し、それらをレプリケーションターゲット (レプリカ) に再度適用するためにネイティブ PostgreSQL レプリケーションスロットを使用します。プライマリデータベースとレプリカデータベースは個別かつ独立したものであるため、異なるデータセットが含まれる場合があります。

一方、Aurora Global Database は物理的なストレージレベルのレプリケーションを使用して同一のデータセットを持つプライマリデータベースのレプリカを作成するため、論理レプリケーションプロセスへのあらゆる依存性が取り除かれます。これは、論理レプリケーションをサポートするために必要となるプライマリ書き込みサーバーのオーバーヘッドを排除します。Aurora Global Database のセカンダリリージョンのインスタンスは、データ変更ステートメントを再生しません。これにより、レプリケーションのオーバーヘッドが大幅に削減され、アプリケーションのワークロードに利用できる容量が増えます。

これは、コミットされたライターからのトランザクション変更が、選択したリージョンに通常 1 秒以内でグローバルにレプリケートされることを意味します。Aurora Global Database がこのレプリケーションを処理する間、データはクラスターの各リージョン内にある 3 つのアベイラビリティーゾーンに永続的に保存されたまま維持されます。

Global Database を使用する理由

Aurora Global Database には、複数の重要な機能があります。

  • セカンダリリージョンへの迅速なグローバルフェイルオーバー
  • リージョン間における低レイテンシーのレプリケーション
  • データベースのパフォーマンスへの影響が無きに等しい
  • 1 リージョンあたり最大 16 個のリードレプリカを使った最大 5 個のリージョンレプリカ
  • MySQL または PostgreSQL との互換性

セカンダリリージョンへの迅速なグローバルフェイルオーバー

確固とした災害復旧計画により、予期しない事態が発生した場合におけるビジネス継続性計画に対する信頼性を高めることができます。Aurora Global Database は、災害復旧の 2 つの重要メトリクスに対して能力を発揮します。

  • 目標復旧時間 (RTO) – 災害発生後から稼働状態に戻るまでにかかる時間
  • 目標復旧時点 (RPO) – 失われる可能性があるデータの量

Aurora Global Database の RPO は 5 秒未満で (データ損失を最小限化)、RTO は 1 分未満です (ダウンタイムを短縮)。

Aurora Global Database は、リージョン全体に障害が発生した場合でも、災害復旧機能と運用を継続する機能を提供します。データベースの劣化または分離の可能性が生じると、Aurora Global Database は迅速に応答してセカンダリリージョンを昇格します。グローバルなストレージベースのレプリケーションでは、昇格されたリージョンが 1 分以内に完全な読み込み/書き込みワークロードを引き継げることから、アプリケーションの稼働時間に対する影響が最小限に抑えられます。

リージョン間における低レイテンシーのレプリケーション

災害復旧以外にも、Aurora Global Database では読み込みをプライマリリージョンから複数のセカンダリリージョンにすばやくオフロードできます。Aurora Global Database では典型的なレプリケーションレイテンシーが 1 秒未満に維持され、上限は 5 秒です。この低レイテンシーにより、オンライントランザクション処理 (OLTP) のワークロードに対するグローバルな読み取りのスケールアウトが可能になります。レプリケーションには、最大 5 つのセカンダリリージョンを選択できます。

Aurora Global Database は、エンドユーザーアプリケーションにごく近い場所にグローバルレプリカを配置することによって、最適なユーザーエクスペリエンスとエンゲージメントのためにレイテンシーを低減し、より迅速なグローバルクライアントアプリケーションデータベース応答時間を提供します。共通の設定データを共有するマルチリージョンのアプリケーションスタックを運用している場合は、Aurora Global Database がほぼ瞬時にデータをレプリケートしてくれることを期待できます。

世界中に複数のオフィスを構えており、グローバルな顧客ベースをお持ちの場合は、コンテンツをプライマリリージョンにアップロードして、ローカルレベルのレイテンシーで世界中のお客様にコンテンツをご利用いただけます。

データベースのパフォーマンスへの影響が無きに等しい

Aurora ストレージレイヤーの Aurora Global Database 専用インフラストラクチャは、アプリケーションのワークロードに対応するために、プライマリリージョンとセカンダリリージョンでプロビジョニングされたデータベースリソースを完全に利用可能な状態にしておきます。Aurora レプリケーションは、プライマリデータベースクラスターのパフォーマンスにほとんど、またはまったく影響を及ぼしません。

高速なリージョン間移行

Aurora Global Database は、アプリケーションの移行に向けて本番データベースを別の AWS リージョンにレプリケートできます。Aurora Global Database がセカンダリリージョンを更新したら、レプリケートされたデータベースを Aurora Global Database からデタッチし、他の Aurora データベースクラスターと同様に操作することができます。現在独立しているクラスターをリージョンのアプリケーションスタックに接続すると、すぐに読み取り/書き込みワークロードの処理を開始します。

互換性

以前、Aurora Global Database は MySQL との互換性がある Amazon Aurora で使用できました。この変更に伴い、Aurora Global Database は PostgreSQL との互換性がある Amazon Aurora で使用できるようになりました。この最初のリリースは、PostgreSQL 10.11 との互換性がある Aurora PostgreSQL 2.4 に適用されます。Aurora には MySQL と PostgreSQL の両方に対する互換性があるため、アプリケーション開発者は、グローバルな規模でもオープンソースデータベースの親しみやすさと柔軟性を活かすことができます。

Aurora Global Database の作成

Aurora Global Database は、AWS マネジメントコンソールAWS CLI から作成、または AWS CLI もしくは SDK から CreateGlobalCluster アクションを実行して作成できます。詳細については、「Aurora Global Database の作成」を参照してください。

以下のスクリーンショットは 2 つの Aurora Global Database クラスターを示しており、一方が MySQL 用、もう一方が PostgreSQL 用です。ハイライト表示されている Aurora PostgreSQL Global Database については、プライマリクラスターが米国東部 (バージニア北部)、セカンダリクラスタが米国東部 (オハイオ) にあります。セカンダリクラスタを追加する手順については、「Aurora グローバルデータベースへの AWS リージョンの追加」を参照してください。

Aurora Global Database からクラスターを削除する方法、フェイルオーバーを実行する方法、またはデータをインポートする方法については、「Amazon Aurora Global Database の使用」を参照してください。

まとめ

Aurora Global Database は、PostgreSQL との互換性を持つ Amazon Aurora へのリージョンリードレプリカと災害復旧機能の提供にご利用いただけるようになりました。この機能により、グローバルデータレプリケーションの実装が容易になります。リージョン全体での障害に対する災害復旧機能は、PostgreSQL データベースのレプリカを有効化するだけで実現でき、実装とインフラストラクチャは AWS が提供します。

 


著者について

 

Richard Waymire は、アマゾン ウェブ サービスのプリンシパルアウトバウンドアーキテクトです。彼は、AWS を使用している場合にソリューションの価値を向上させる手助けとなるために、AWS の顧客と協力してデータベースプロジェクト上の指導や技術支援を行っています。

 

 

 

Ahmad Elayat はアマゾン ウェブ サービスのシニアプロダクトマネージャーです