Amazon Aurora
Amazonが設計・開発したMySQL/PostgreSQL互換のデータベースエンジン。フルマネージド型サービスであるAmazon RDSで利用可能なデータベースエンジンですので、データベースのスケーリング(拡張、縮小)、高可用性、バックアップ、OS/データベースソフトウェアへのパッチ、サーバーの電源やメンテナンスなどはRDS(AWS)によって管理。
RDSの他のデータベースエンジンと比べた時のAuroraの特徴:
●データベースインスタンスとストレージが分離したアーキテクチャ
Auroraはデータベースインスタンスとストレージが分離しており、柔軟な構成が可能。手動でのデータベース管理が不要なサーバーレス構成や、最大15台のレプリカインスタンス(参照専用のインスタンス)を構成することもできます。
●複数のデータコピーと自動修復機能などによるストレージの高い耐障害性
ストレージは、デフォルトで3つのAZに2つずつ(計6つ)のデータコピーが作成。これらのストレージは「クラスタボリューム」というクラスタ構成で管理。
Auroraのクラスタボリューム内のストレージは互いに監視しあっており、データの破損が発生しても自動で検出、修復。
●レプリカインスタンスの自動フェイルオーバーによる高可用性
データベースインスタンスは、書き込みを行うプライマリインスタンスを1台、参照専用のレプリカインスタンス(リードレプリカ)を最大で15台作成することができます。
レプリカインスタンスはデフォルトでプライマリインスタンスと異なるAZに作成され、プライマリインスタンスに障害が発生した場合は自動でフェイルオーバー(切り替え)とプライマリインスタンスへの昇格が行われます。
RDSのその他のデータベースエンジンはスタンバイ用のインスタンスとリードレプリカは別々のインスタンスですが、Auroraではリードレプリカがスタンバイインスタンスを兼ねている。
●最大64TBまでスケール可能な拡張性
ストレージの容量は、最大で64TBまで自動的に拡張されます(RDSの他のデータベースエンジンの最大サイズは16TB)。データの増加に伴って拡張されていくため、必要な容量を計算して事前にプロビジョニング(予約)する、といった手間は必要ありません。
【Auroraのエンドポイント】
Auroraでは、インスタンスへアクセスするためのエンドポイント(接続先)を用途ごとに分けています。
クラスターエンドポイントは更新も参照も行うことができますが、参照クエリが多いと更新処理を圧迫してしまいます。用途ごとにエンドポイントを使い分けることで負荷を分散し、全体的なパフォーマンス改善を図ることができます。
なお、レプリカインスタンスが複数台あった場合、読み取りエンドポイントへのリクエストは各インスタンスへ均等に割り振られます。
また、フェイルオーバーが発生してもアプリケーションはエンドポイントを切り替える必要はありません。レプリカインスタンスからプライマリインスタンスへの昇格が自動的に行われるように、クラスターエンドポイントの接続先インスタンスも自動で切り替えが行われ、運用を継続できます。
【Amazon Aurora Global Database(Aurora グローバルデータベース)】
Auroraデータベースを複数のリージョンにまたがって運用できるサービス。例えば、Aリージョンで稼働しているデータベースをBリージョンにも配置できる。Auroraグローバルデータベースを使用しても、ユーザーは複数のリージョンのデータベースを管理する必要はありません。データはプライマリとして稼働しているメインのリージョンからセカンダリリージョンへレプリケートされます。
グローバルデータベースの大きな利点
・データベースアクセスを世界中から高速に行える(レイテンシの向上)
・リージョン単位で発生した大規模な障害の災害対策
異なるリージョンからデータを読み取りたい場合はリードレプリカを異なるリージョンに配置することもできますが、Auroraグローバルデータベースは書き込みも異なるリージョンから行えます。
また、Auroraグローバルデータベースは災害復旧時に非常に高い効果を発揮。プライマリリージョンのデータベースが停止した場合、セカンダリリージョンのデータベースを自動で昇格(フェイルオーバー)させ運用を継続できます。Auroraグローバルデータベースでは、一般的にディザスタリカバリの指標として使用されるRPO(目標復旧時点)を 1秒、RTO(目標復旧時間)を1分未満と定めています。
※RPO(Recovery Point Objective:目標復旧時点) ... どの時点までのデータを復旧させるか。データベースの更新頻度が高い場合は、0秒(停止直前)のデータ復旧が求められる。
※RTO(Recovery Time Objective:目標復旧時間) ... どのくらいの時間で(いつまでに)復旧させるか。サービスやシステムを停止していられる時間。