前回までに述べたように、「Amazon Aurora」はクラウドの特性を存分に生かして性能や可用性を高めている。ただ実際にAuroraがどのようなシステム構成で運用されているのか、利用者には見えにくい。今回は、AWS(アマゾン・ウェブ・サービス)が公開する資料や、筆者のAurora運用経験を基に、Auroraの特徴である「共有分散ストレージ」と「キャッシュの分離」について分かったことを解説する。

共有分散ストレージでデータの整合を確保

 まず、共有分散ストレージについて見ていこう。Auroraは、複数のデータベースノードで分散ストレージを共有している。書き込み可能なノード(インスタンス)は1台に限られるものの、その他のノードは「リードレプリカ」として読み込み用に利用できる。障害時には、リードレプリカのうちの一つをマスターノードにすぐに切り替えられる。ノード間のデータ同期の遅延もほとんどない(図1)。

図1●共有分散ストレージを採用するAuroraは、データ同期の遅延を抑えられる
図1●共有分散ストレージを採用するAuroraは、データ同期の遅延を抑えられる
(出所:Socket)
[画像のクリックで拡大表示]

 「Amazon RDS for MySQL」でもリードレプリカは利用できるが、マスターとリードレプリカは別々のストレージを持つ。書き込みが発生したらノード間でデータを送って同期するが、数百ミリ秒から多い時では数十秒の遅延が発生する。またマスターに障害が起こっても自動的にリードレプリカがマスターに変更されることはなく、手動での切り替えが発生する。瞬時に切り替えたければ、「アベイラビリティゾーン(AZ)」と呼ぶ地理的に独立したデータセンターを使ってウォームスタンバイの構成を採る必要がある。