Amazon Auroraについて概要をメモ
Amazon Auroraとは?
- AWSが開発したRDSデータベースエンジン
- MySQL、PostgreSQLと高い互換性があり、高可用性を備える。
- ストレージは128TBまで自動拡張
Amazon Aurora DB クラスター
構成は以下の通り。
インスタンスとストレージが分かれてるのが特徴。
プライマリがそれぞれに読み書き、レプリカは各AZに配置して可用性を維持。
Auroraを利用するにはインスタンスでは無く、エンドポイントURLを利用
- クラスターエンドポイント
プライマリに接続
- 読み取りエンドポイント
レプリカに負荷分散して接続
- カスタムエンドポイント
選択したレプリカ間での負荷分散に利用。
可用性
クラスタボリュームの可用性
- 2つのディスク障害
読み書き影響なし - 3つ以上のディスク障害
書き込みは不可。読み込みのみ継続
インスタンスの可用性
プライマリ障害時はレプリカが昇格。多くの場合フェイルオーバ速度は通常のRDSより速い。
クラスターエンドポイントに接続しておけば、障害時の切り替え不要。
昇格の優先度は以下
1.優先度が高い(0に近い)
2.優先度が同じ場合はインスタンスサイズが大きい方
※優先度、サイズが同じなら任意のインスタンス
クラスターキャッシュ管理
Aurora PostgreSQLの機能。
キャッシュを同期しておく事でフェイルオーバ時のパフォーマンス影響を少なくする。
フェイルオーバー先のレプリカの優先度を0にし、かつ、インスタンスサイズを同じにする必要あり。
Auroraグローバルデータベース
複数のリージョンに跨ったデータベース。
1つのプライマリリージョンと、最大5つのセカンダリリージョンで構成。
プライマリ障害時、セカンダリリージョンが昇格する。
※クロスリージョンと類似機能だが、こちらが推奨されている。
クロスリージョンレプリケーション
プライマリクラスタと別のリージョンにリードレプリカを作成する機能。
マルチマスタークラスター
MySQLエディションのみ。
クラスター内のインスタンスが全てプライマリ(マスタ)とする機能。
モードが2つ存在する。
・アクティブ/アクティブモード
全インスタンスで同時読み書き実施
・アクティブ/パッシブ
1つのインスタンスで読み書き。他は待機し、プライマリ障害時に機能する。
フェイルオーバーの概念は無く、障害時の影響が無い。
制約が複数あるので注意。
フェールオーバー高速化
以下点を考慮
・読み書き可能なエンドポイントを設定し、フェールオーバー時のアプリの変更が不要になる
・クラスターキャッシュ管理機能を有効化
・JDBC接続文字列を低いタイムアウト値を設定
・TCPキープアライブのTTLを短くする
料金
- 通常のRDSでは確保した容量に対する料金だが、Auroraは自動割り当てで利用分のみ発生。
- データ削除に合わせて割り当て領域も減少する。
- 通常のRDS同様、VPC外へのアウトバウンド通信に対し発生。
バックアップ
自動バックアップ
・データの差分バックアップ。S3へ保管。
・保持期間は1〜35で指定。0には出来ない。それ以上の保持はスナップショット機能を使う。
スナップショット
手動、自動。どちらも可能。
バックトラック機能
過去の特定の時点に戻す機能。
復元が高速かつストレージコストが少ない。
モニタリング
障害挿入クエリ(Fault Injection Queries)
特定のクエリにより、DBインスタンスの障害をシミュレートできる。
データベースアクティビティストリーム
CloudWatchlogsよりリアルタイムでの監視が可能。
他のRDSでも利用可能だが、データベースエンジンにより機能が異なる。
Auroraは拡張された機能を持っている。
データベースに特化したクエリや接続情報、などが検知できる。
有効化すると、クラスターのアクティビティがリアルタイムでKinesis Data Streams へ連携される。
例)
Kinesis→Firehouse→ES
Kinesis→その他の可視化サービス
※同期モードと、非同期モードがあり、非同期モードの方が遅延するがDBへのパフォーマンス影響が少ない。
別アカウントへログをリアルタイム処理
ログをCloudWatchにログを発行。サブスクリプションフィルタを作成して、ターゲットアカウントのKinesis Data Streamsへログを送信。