「Amazon RDS for Aurora」(以下Aurora)は、米Amazon Web ServicesがMySQL 5.6をベースに独自開発したRDBサービスだ。ただし、中身は従来のRDBと一線を画す。
必要に応じて素早くリソースを追加/解放できる、世界各地にデータセンターがある、運用管理を自動化する――といった、AWSというクラウド基盤の特長を生かせるように、RDBMS(Relational Database Management System)とストレージから成るRDBサービスを作り込んだ。MySQLなど従来のRDBに比べ、特に耐障害性、拡張性、性能が高い。
今号では、耐障害性と拡張性を取り上げる。性能評価は次号に掲載予定だ。Auroraは新しいRDBだけに、仕組みを知る必要がある。Auroraのアーキテクチャー、耐障害性の要になるレプリケーション、フェールオーバーの仕組みを解説する。
RDBの要素を3層に分離
従来のRDBMSでは、SQL、トランザクション処理、キャッシング(バッファーキャッシュ)、ストレージといった要素が一体のもの(モノリシック)として構成されていた。そのため、特定の要素だけをスケールアップ/スケールアウトさせることが難しかった。さらに、障害発生時などは再起動によってキャッシュが消える問題もあった。
Auroraでは、「SQL、トランザクション処理」「キャッシング」「ストレージ(およびロギング)」の3層に分離させた(図1)。
キャッシングを独立させたことで、インスタンス本体(SQL、トランザクション処理)を再起動してもキャッシュが残る(図2)。これは、障害発生時やメンテナンス時の性能維持やサービス継続に役立つ。