Amazon Aurora でのレプリケーション - Amazon Aurora

Amazon Aurora でのレプリケーション

Aurora ではレプリケーションオプションをいくつかご用意しています。各 Aurora DB クラスターには、同じクラスター内の、複数の DB インスタンス間のレプリケーションが組み込まれています。Aurora クラスターをソースまたはターゲットにして、レプリケーションをセットアップすることもできます。Aurora クラスターの中にデータをレプリケートするか、クラスターからデータをレプリケートするときは、Aurora グローバルデータベースのような組み込み機能か、MySQL または PostgreSQL DB エンジンの従来のレプリケーションメカニズムの、いずれかを選択できます。適切なオプションを選択し、それに基づいて、必要に応じて高可用性、利便性、パフォーマンスを適切に組み合わせることができます。以下のセクションでは、各技術を選択する方法およびタイミングについて説明します。

Aurora レプリカ

Aurora プロビジョンド DB クラスターに 2 つめ、3 つめ、と DB インスタンスを作成すると、Aurora が、書き込み DB インスタンスからその他すべての DB インスタンスに、レプリケーションを自動でセットアップします。これらその他の他の DB インスタンスは、読み取り専用で、Aurora レプリカと呼ばれます。また、クラスター内で書き込みと読み取りの DB インスタンスを組み合わせる方法について説明する際は、リーダーインスタンスとも呼ばれます。

Aurora レプリカには主な目的が 2 つあります。これらにクエリを発行することで、アプリケーションの読み取り操作をスケールできます。これは、通常はクラスターのリーダーエンドポイントに接続することで行われます。これにより、Aurora は、読み取り専用の接続負荷を、クラスター内にある Aurora レプリカと同じ数だけ分散できます。Aurora レプリカは、可用性の向上にも役立ちます。クラスター内のライターインスタンスが使用できなくなると、Aurora はリーダーインスタンスのうちの 1 つを自動的に昇格させ、新しいライターとして機能させます。

Aurora DB クラスターは、最大で 15 Aurora のレプリカを含むことができます。Aurora レプリカは、AWS リージョン内で DB クラスターが使用している、複数のアベイラビリティーゾーン間に分散できます。

DB クラスターのデータには、クラスター内の DB インスタンスとは無関係に、独自の高可用性と信頼性機能があります。Aurora ストレージ機能に慣れていない方は、「Aurora ストレージの概要」を参照してください。DB クラスターボリュームは、物理的に、DB クラスターのデータの複数のコピーで構成されます。DB クラスター内のプライマリインスタンスと Aurora レプリカは、クラスターボリューム内のデータを単一の論理ボリュームとして認識します。

この結果、すべての Aurora レプリカは、最小のレプリカラグでクエリの結果として同じデータを返します。このラグは、通常はプライマリインスタンスが更新を書き込んだ後、100 ミリ秒未満です。レプリカラグは、データベースの変更レートによって異なります。つまり、データベースに対して大量の書き込みオペレーションが発生している間、レプリカラグが増加することがあります。

Aurora レプリカは、クラスターボリュームでの読み取りオペレーションに特化しているため、読み取りのスケーリングに最適です。書き込みオペレーションはプライマリインスタンスによって管理されます。クラスターボリュームは DB クラスター内のすべての DB インスタンスで共有されるため、Aurora レプリカごとにデータのコピーをレプリケートする際に必要な追加作業は最小限に抑えられます。

可用性を高めるために、フェイルオーバーターゲットとして Aurora レプリカを使用できます。つまり、プライマリインスタンスが失敗した場合、Aurora レプリカがプライマリインスタンスに昇格されます。プライマリインスタンスに対して行われた読み取り要求と書き込み要求が失敗して例外が発生すると、短時間の中断が発生し、Aurora レプリカは再起動されます。この方法で Aurora レプリカを昇格するほうが、プライマリインスタンスを再作成するよりも、時間を短縮できます。Aurora DB クラスターに Aurora レプリカは含まれていない場合、DB クラスターは、DB インスタンスが失敗イベントから復元している間、使用できなくなります。高可用性のシナリオでは、1 つ以上の Aurora レプリカを作成することをお勧めします。これらのレプリカは、プライマリインスタンスと同じ DB インスタンスクラスとし、Aurora DB クラスターの異なるアベイラビリティーゾーンに配置します。フェイルオーバーターゲットとしての Aurora レプリカについては、「Aurora DB クラスターの耐障害性」を参照してください。

Aurora レプリカが削除されるとそのインスタンスエンドポイントは直ちに削除され、Aurora レプリカも読み込みエンドポイントから削除されます。削除中の Aurora レプリカで実行されているステートメントがある場合は、削除までに 3 分の猶予期間があります。既存のステートメントは、猶予期間中に適切に終了する場合があります。猶予期間が終了すると、Aurora レプリカはシャットダウンし、削除されます。

注記

暗号化されていない Aurora DB クラスター用に暗号化された Aurora レプリカを作成することはできません。暗号化された Aurora DB クラスター用に暗号化されていない Aurora レプリカを作成することはできません。

ヒント

Aurora クラスター内の Aurora レプリカをレプリケーションの唯一の形式として使用すると、データの高可用性を維持できます。また、組み込みの Aurora レプリケーションを他の種類のレプリケーションと組み合わせることも可能です。これにより、データの可用性と地理的ディストリビューションのレベルをさらに高めることができます。

Aurora レプリカを作成する方法については、「DB クラスターに Aurora レプリカを追加する」を参照してください。

Aurora MySQL でのレプリケーション

Aurora レプリカに加えて、Aurora MySQL でのレプリケーションには次のオプションがあります。

  • さまざまな AWS リージョンの Aurora MySQL DB クラスター。

    • Aurora グローバルデータベースを使用することで、複数のリージョンをまたいでデータをレプリケートできます。詳細については、Aurora グローバルデータベースを使用した AWS リージョン間での高可用性 を参照してください。

    • MySQL バイナリログ (binlog) レプリケーションを使用することで、別の AWS リージョンに、Aurora MySQL DB クラスターの Aurora リードレプリカを作成できます。各クラスターは、この方法で最大 5 つのリードレプリカを作成し、それぞれ異なるリージョンに作成できます。

  • 同一リージョン内の 2 つの Aurora MySQL DB クラスター (MySQL バイナリログ (binlog) のレプリケーションを使用)。

  • マスターとしての RDS for MySQL DB インスタンスと Aurora MySQL DB クラスター (RDS for MySQL DB インスタンスの Aurora リードレプリカを作成)。通常、この方法は、進行中のレプリケーションではなく、Aurora MySQL への移行に時に使用されます。

Aurora MySQL でのレプリケーションの詳細については、「Amazon Aurora MySQL を使用したシングルマスターレプリケーション」を参照してください。

Aurora PostgreSQL でのレプリケーション

Aurora レプリカに加えて、Aurora PostgreSQL を使ったレプリケーションには以下のオプションがあります。

  • データのソースとしての Amazon RDS PostgreSQL DB インスタンスと Aurora PostgreSQL DB クラスター (Aurora PostgreSQL DB インスタンスの Amazon RDS レプリカを作成)。

  • 同じリージョンにある 2 つの Aurora PostgreSQL DB クラスター (PostgreSQL の論理レプリケーション機能を使用)。

  • 1 つのリージョンと、異なるリージョンに置かれた最大 5 つの読み取り専用セカンダリ DB クラスター内にある Aurora プライマリ DB クラスター (Aurora グローバルデータベースを使用)。Aurora PostgreSQL では、クロスリージョン Aurora レプリカはサポートしていません。ただし、Aurora グローバルデータベースを使用して、Aurora PostgreSQL DB クラスターの読み取り機能を複数の AWS リージョンに拡張し、可用性の目標を達成することができます。詳細については、「Amazon Aurora グローバルデータベースの使用」を参照してください。

Aurora PostgreSQL でのレプリケーションの詳細については、「Amazon Aurora PostgreSQL でのレプリケーション」を参照してください。