

# Amazon Aurora でのレプリケーション
<a name="Aurora.Replication"></a>

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

**Topics**
+ [Aurora レプリカ](#Aurora.Replication.Replicas)
+ [Aurora MySQL でのレプリケーション](#Aurora.Replication.AuroraMySQL)
+ [Aurora PostgreSQL でのレプリケーション](#Aurora.Replication.AuroraPostgreSQL)

## Aurora レプリカ
<a name="Aurora.Replication.Replicas"></a>

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 ストレージ機能に慣れていない方は、「[Amazon Aurora ストレージの概要](Aurora.Overview.StorageReliability.md#Aurora.Overview.Storage)」を参照してください。DB クラスターボリュームは、物理的に、DB クラスターのデータの複数のコピーで構成されます。DB クラスター内のプライマリインスタンスと Aurora レプリカは、クラスターボリューム内のデータを単一の論理ボリュームとして認識します。

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

**注記**  
Aurora レプリカは、次の Aurora PostgreSQL バージョンでライター DB インスタンスとの通信を 60 秒以上失うと自動的に再起動します。  
14.6 以前のバージョン
13.9 以前のバージョン
12.13 以前のバージョン
すべての Aurora PostgreSQL 11 バージョン
読み取り可用性機能を使用すると、Aurora レプリカは自動的に再起動しません。読み取り可用性機能とその適用可能なバージョンの詳細については、「[Aurora レプリカの読み取り可用性の向上](AuroraPostgreSQL.Replication.md#AuroraPostgreSQL.Replication.Replicas.SRO)」を参照してください。

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

可用性を高めるために、フェイルオーバーターゲットとして Aurora レプリカを使用できます。つまり、プライマリインスタンスが失敗した場合、Aurora レプリカがプライマリインスタンスに昇格されます。短い中断があり、その間はプライマリインスタンスに対して行われた読み取りおよび書き込みリクエストは、例外により失敗します。

フェイルオーバーによって Aurora レプリカを昇格する方が、プライマリインスタンスを再作成するよりも、時間を短縮できます。Aurora DB クラスターに Aurora レプリカが含まれていない場合、DB クラスターは、DB インスタンスが障害から復元している間、使用できなくなります。

フェイルオーバーが発生すると、DB エンジンのバージョンによっては、一部の Aurora レプリカが再起動されます。例えば、Aurora MySQL では、Aurora は、フェイルオーバー時にのみ、ライター DB インスタンスとフェイルオーバーターゲットを再起動します。Aurora DB エンジンバージョンの再起動動作については、「[Amazon Aurora DB クラスターまたは Amazon Aurora DB インスタンスの再起動](USER_RebootCluster.md)」を参照してください。再起動またはフェイルオーバー時にページキャッシュがどうなるかについては、「[存続できるページキャッシュ](Aurora.Overview.Reliability.md#Aurora.Overview.CacheWarming)」を参照してください。

高可用性のシナリオでは、1 つ以上の Aurora レプリカを作成することをお勧めします。これらのレプリカは、プライマリインスタンスと同じ DB インスタンスクラスとし、Aurora DB クラスターの異なるアベイラビリティーゾーンに配置します。フェイルオーバーターゲットとしての Aurora レプリカの詳細については、「[Aurora DB クラスターの耐障害性](Concepts.AuroraHighAvailability.md#Aurora.Managing.FaultTolerance)」を参照してください。

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

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

Aurora レプリカを作成する方法については、「[DB クラスターに Aurora レプリカを追加する](aurora-replicas-adding.md)」を参照してください。

## Aurora MySQL でのレプリケーション
<a name="Aurora.Replication.AuroraMySQL"></a>

Aurora レプリカに加えて、Aurora MySQL でのレプリケーションには次のオプションがあります。
+ さまざまな AWS リージョンの Aurora MySQL DB クラスター。
  +  Aurora グローバルデータベースを使用することで、複数のリージョンをまたいでデータをレプリケートできます。詳細については、「[Aurora グローバルデータベースを使用した AWS リージョン間での高可用性](Concepts.AuroraHighAvailability.md#Concepts.AuroraHighAvailability.GlobalDB)」を参照してください。
  +  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 でのレプリケーション](AuroraMySQL.Replication.md)」を参照してください。

## Aurora PostgreSQL でのレプリケーション
<a name="Aurora.Replication.AuroraPostgreSQL"></a>

Aurora レプリカに加えて、Aurora PostgreSQL を使ったレプリケーションには以下のオプションがあります。
+ 1 つのリージョンと、異なるリージョンに置かれた最大 10 の読み取り専用セカンダリ DB クラスター内にある Aurora プライマリ DB クラスター (Aurora グローバルデータベースを使用)。Aurora PostgreSQL では、クロスリージョン Aurora レプリカはサポートしていません。ただし、Aurora グローバルデータベースを使用して、Aurora PostgreSQL DB クラスターの読み取り機能を複数の AWS リージョンに拡張し、可用性の目標を達成することができます。詳細については、「[Amazon Aurora Global Database の使用](aurora-global-database.md)」を参照してください。
+ 同じリージョンにある 2 つの Aurora PostgreSQL DB クラスター (PostgreSQL の論理レプリケーション機能を使用)。
+ データのソースとしての RDS for PostgreSQL DB インスタンスと Aurora PostgreSQL DB クラスター ( RDS for PostgreSQL DB インスタンスの Aurora リードレプリカを作成)。通常、この方法は、進行中のレプリケーションではなく、Aurora PostgreSQL への移行時に使用されます。

Aurora PostgreSQL でのレプリケーションの詳細については、「[Amazon Aurora PostgreSQL でのレプリケーション](AuroraPostgreSQL.Replication.md)」を参照してください。