こんにちは、技術1課の多田です。
今日で2月も終わり春も目前に迫ってきているので、お花見が楽しみになってきました。
弊社の目の前の通りにも桜の木があるので、キレイな桜並木になると思います。是非近くにお越しの際はご覧頂ければと思います。
さて、今回は、「Amazon Aurora」(以下、Aurora)について書いていきます。
ご存知の方も多いかと思いますが、AuroraはAWSが作ったデータベースエンジンになります。詳しくはこちらをご覧下さい。
この記事では、Auroraに関する技術や機能についてまとめていきたいと思います。
以下、本記事の目次です。
- Auroraの特徴
- クラスターとは
- Auroraで使用される用語
- データのレプリケーション
- データベースのバックアップ
- パラメータグループ
- データベースのモニタリング
- まとめ
Auroraの特徴
ますは、Auroraの特徴についてです。
- AWS謹製のMySQL互換リレーショナルデータベースで、エンタープライズレベルの可用性とOSSレベルのコストを両立
- 最大でMySQLの5倍のパフォーマンスを発揮する
- ストレージが10GBから64TBまでシームレスに拡張
- 3つのAvailability Zone(以下、AZ)に合計6つのデータコピーを保持(S3にバックアップを実施)
- Auroraを作成すると、データベースクラスターが作成される
- Auroraは99.99%の可用性を実現するように設計されている
クラスターとは
クラスターは、複数のコンピュータを連結し、利用者や他のコンピュータに対して全体で1台のコンピュータであるかのように振舞わせる技術です。
データベースにはアプリケーションが使うデータが保存されているため、障害でデータベースが使えなくなる時間が存在することはデータにアクセスできなくなり、致命的です。
このような事態を回避するため、クラスターを構成して障害が発生しても別のデータベースを稼働させ、アプリケーションがデータにアクセスできるよう対策を行うことが多いです。
Auroraでは、データベースを作成する時にオプションで指定するだけでこのクラスターを構成してくれます。
クラスターは3つのAZにインスタンスが配置され、1つのAZで障害が発生しても別のAZのインスタンスへ切り替わります。
Auroraで使用される用語
Aurora クラスターは2種類のインスタンスで成り立っています。
1. プライマリインスタンス
プライマリインスタンスは、データベースの読み取りと書き込みの処理を行い、すべてのデータ更新を実行します。
Aurora クラスターには1つのプライマリインスタンスがあります。
2. Auroraレプリカ
Aurora レプリカはデータの読み取り処理を行います。
Auroraでは、最大15個のAurora レプリカを持つことが可能で、他のAZに分散配置することでデータベースの可用性を高めることもできます。
プライマリインスタンスで障害が発生した時、Aurora レプリカにフェイルオーバーします。
それぞれのインスタンスの関係性を図にしてみると以下のようなイメージです。
尚、緑矢印が書き込み処理、青矢印が読み取り処理を表しています。
では、マネジメントコンソールにて確認してみましょう。
今回の構成情報は次の通りです。
インスタンス名 | インスタンスクラス | Availability Zone | インスタンスの種類 |
auroratest | db.r3.large | ap-northeast-1a | プライマリインスタンス |
aurorareplica-1 | db.r3.large | ap-northeast-1a | Aurora レプリカ |
aurorareplica-2 | db.r3.large | ap-northeast-1c | Aurora レプリカ |
以下の画像の赤枠内がAurora クラスターになります。
プライマリインスタンス1台、Aurora レプリカ2台となっています。
また、他のデータベースインスタンスとAurora クラスターが並行稼動させた場合に、マネジメントコンソールで自分が操作するインスタンスがAurora クラスターかどうかを見分けるポイントについてにも合わせて触れます。
インスタンスの詳細画面を開き、エンドポイントを確認してください。
他のインスタンスは、「エンドポイント」という表記になっていますが、Auroraでは「クラスターエンドポイント」になっていますので、この表記の違いが見分けるポイントになります。
データのレプリケーション
3つのAZでAurora クラスターを組むため、データのレプリケーションがどうなっているのかが気になるところです。
Auroraでは、プライマリインスタンスが更新を書き込んだ後、レプリカラグが100ミリ秒未満なので、殆ど遅延はありません。
データベースのバックアップ
データベースのバックアップやスナップショットの取得は、他のデーターベースエンジンと共通しており、データベース作成時のオプション指定による自動バックアップまたはユーザーによるスナップショットを選択できます。
バックアップとスナップショットは増分バックアップでS3に保存されるため、データの耐久性には優れている設計になっています。
パラメータグループ
Auroraでは他のデータベース同様に設定はパラメータグループによって管理するのですが、他のデータベースと異なる点があります。
それは、クラスター全体に適用されるパラメーターと、クラスター内の特定のインスタンスのみに適用されるパラメーターがあります。
赤枠がクラスター内の特定のインスタンスのみに適用されるパラメータグループで、青枠がクラスター全体に適用されるパラメータグループです。
クラスター全体のパラメータグループの詳細については、こちらをご覧下さい。
データベースのモニタリング
マネジメントコンソールからAuroraの状態とパフォーマンスを監視することができます。
監視のオプションは、4つの種類があります。
1. Show Multi-Monitoring View(マルチグラフビューで表示)
Auroraメトリックスの要約を表示します。
2. Show Single Monitoring View(シングルグラフビューで表示)
1つのメトリックスの特定の時点での詳細を表示します。
3. Show Full Monitoring View(最新メトリックスビューで表示)
Auroraメトリックスの要約をグラフなしで表示します。
4. Enhanced Monitoring(拡張モニタリング)
拡張モニタリングが有効になっているインスタンスに使用できるOSメトリックスの概要を表示します。
拡張モニタリングでは、インスタンス上のプロセスやスレッドがどのようにCPUを使っているか等を表示する時に有効です。
また、CloudWatchでも他のデータベースエンジン同様にモニタリングできます。
Auroraの具体的な監視項目については、こちらをご覧ください。
まとめ
Auroraに関する技術や機能のまとめを書いてみました。
性能、可用性、耐障害性に優れたデータベースエンジンのAuroraを、次回以降では実際に使ってみた結果をブログにしてみたいと思います。