SAA学習-信頼性設計-RDSの概要
今回のテーマ:RDSの概要
RDS
RDSは様々なデータベースソフトウェアに対応したフルマネージドなリレーショナルデータベースとなります。
ソフトウェアの種類は以下のものなどがあります。
AWSのデータベース構築
AWSにおけるデータベース構築はEC2に自らインストールするか専用DBサービスを利用するかの2通り
ケース | メリット | デメリット |
---|---|---|
EC2の場合 | 自由にDB構成や機能を利用 | 構築・運用が手間 |
RDSの場合 | 構築・運用が楽(大部分がAWS側) | AWS提供の範囲内での利用制限 |
RDSの制約事項
RDSはマネージド型で便利な反面、AWSから提供される機能範囲内で制限を受けます。
主な制限事項としては以下となります。
RDSの特徴
- RDS自体がマネージド型の更改用なのに加え、マルチAZによるMaster/Slave構成を容易に構築することが可能
- 参照専用のレプリカを最大5台(Auroraは15台)設置可能で、DBの読み取り処理をスケールアウトが可能
- 自動/手動でスナップショットを取得し、保存管理することで耐障害性を確保することが可能
スケーリング
マネージメントコンソールやAPIからスケールアップ可能
- インスタンスタイプを変更しスケールアップ/ダウンを実施
- コマンドライン(AWS CLI)やAPIからストレージを数クリックで容易にスケールアップ/ダウンが可能
- 一時的にインスタンスタイプを大きくしてその後戻すことも可能
- ストレージサイズは拡張はできるが縮小ができない
データベースのシャーディング(水平分割)機能を利用し、RDSの書き込みをスケーリングすることが可能
DBインスタンスの暗号化
保管時のインスタンスとスナップショットの暗号化が可能となります。 暗号化対象と暗号化方式は以下のものになります。
暗号化対象
- DBインスタンス
- 自動バックアップ
- リードレプリカ
- スナップショット
暗号化方式
RDSのスケーリング
データベースのパフォーマンス低下に対しスケーリング対応を実施することが可能
パフォーマンスの低下させる要因:アクセス多数、クエリ処理の増加など
スケーリングのタイプ
スケーリングのタイプは垂直スケーリングと水平スケーリングの2つのタイプがあります。
垂直スケーリング
- 拡張方法(スケールアップ):メモリやCPUの追加・増強
- 低減方法(スケールダウン):メモリやCPUの削減・低性能化
水平スケーリング
- 拡張方法(スケールアップ):処理を行う機器/サーバー台数の増加
- 低減方法(スケールダウン):処理を行う機器/サーバー台数の低減
スケールアップ
インスタンスタイプやサイズを変更することでスケールアップによるパフォーマンス向上を実施することが可能
実施方法 | 概要 |
---|---|
インスタンスサイズの変更 | 現在のDBインスタンスタイプに対しサイズを高性能なものに変更することで、パフォーマンスを向上させる |
インスタンスタイプの変更 | 現在のDB利用方式に適したDBインスタンスタイプがある場合、そのタイプに変更する |
ストレージタイプの変更 | ストレージタイプを高性能なタイプ(I/O処理が多い場合IOPS)に変更する |
インスタンスタイプ
最初のDBがDBインスタンスを表し、その後のアルファベットと数字がインスタンスタイプになります。
インスタンスタイプの後に大きさ(micro/largeなど)の表示がインスタンスサイズとなります。
RDSインスタンスタイプの詳細:Amazon RDS インスタンスタイプ | AWS
インスタンスタイプとサイズ
2つのインスタンスタイプ
- 汎用:バランスの取れたコンピューティング、メモリ、ネットワークリソースを提供し、多様なワークロードに使用できるインスタンスタイプ
- メモリ最適化:メモリ内の大きいデータセットを処理するワークロードに対し高速なパフォーマンスを実現するように設計されたインスタンスタイプ(高速データベースにはメモリ最適化を利用する)
インスタンスタイプ:汎用
バランスが取れた対応が可能なMファミリーとバーストパフォーマンスが提供されるTファミリーが利用可能
タイプ | 概要 |
---|---|
T2インスタンス | 汎用バーストパフォーマンスインスタンス。 ベースラインレベルのCPUパフォーマンスを提供し、ベースラインを越えてバーストする機能を有する。 マイクロサービス、テストおよびステージングなど様々なデータベースワークロードに適している |
T3インスタンス | T2インスタンスと同じく汎用バーストパフォーマンスインスタンス。 T3インスタンスはバランスの取れたコンピューティング、メモリ、およびネットワークリソースを提供し、使用中に一時的なスパイクが生じる中程度のCPU使用率を持つデータベースワークロードに適している |
M4インスタンス | バランスの取れたコンピューティング、メモリ、およびネットワークリソースを提供し、オープンソースまたはエンタープライズアプリケーション用の小規模および中規模データベースを含む様々なデータベースワークロードに適している |
M5インスタンス | 最新世代の汎用インスタンスでM4より優れたパフォーマンスを提供する。 バランスの取れたコンピューティング、メモリ、およびネットワークリソースを提供し様々なデータベースワークロードに適している |
インスタンスタイプ:メモリ最適化
メモリ負荷の高い処理や高速データベース処理に利用する
タイプ | 概要 |
---|---|
R4インスタンス | メモリ負荷の高いデータベースワークロード向けに最適化されており、RAM GiBあたりのメモリ華夏がR3よりも安価 |
R5インスタンス | R4よりもvCPU当たり5%大きいメモリを適用する最新世代のメモリ最適化インスタンス。 最大で768 GiBのメモリを提供する。 R4と比較しGiBごとの価格が10%低く、CPUパフォーマンスも最大20%高い |
X1インスタンス | 大規模アプリケーション、エンタープライズクラスのアプリケーション、およびインメモリアプリケーション用に最適化されたインスタンス。 Amazon RDSのインスタンスタイプの中でもRAM 1GiB当たりの価格が最も低いインスタンスの1つ |
X1eインスタンス | 高性能データベースように最適化されたインスタンス。 X1eインスタンスはAmazon RDSのインスタンスの中でもRAM 1GiBあたりの価格が最も低いインスタンスの1つ |
Z1dインスタンス | クラウドインスタンスの中で最も高速で、すべてのコア周波数が4.0GHzで持続可能。 高いコンピューティング性能と大容量メモリの組み合わせにより、Z1dインスタンスはコア単位のライセンス費用が高いリレーショナルデータベースに最適 |
ストレージタイプの変更
ストレージタイプは汎用とプロビジョンドIOPSタイプから選択します
マグネティックは古いタイプのためあまり利用しません
ストーレジタイプ | 概要 |
---|---|
汎用 | ・SSDタイプ ・GB当たりの容量課金 ・通常のパフォーマンスに加えてバーストを実施し100~10,000IOPSを実現可能 |
プロビジョンドIOPS | ・SSDタイプ ・GBあたりの容量課金を実施+プロビジョン済みIOPS単位の課金 ・通常のパフォーマンスに加えてバーストを実施し、1,000~30,000IOPSを実現可能 |
マグネティック | ・ハードディスクタイプ ・GBあたりの容量課金を実施+IOリクエスト課金 ・平均100~最大数百のIOPS |
ストレージサイズの容量変更
ストレージ容量は設定変更で増加することは可能ですが、減少させることはできない
ストレージサイズのAutoScaling
ストレージ容量に対しAutoScalingを実行することが可能
RDSのスケールアウト
リードレプリカの増設、キャッシュによる高速化が可能
また、全く別のDBへ変更するAuroraへの移行も可能
- リードレプリカの増設: 読込処理のアクセス集中を分散化するため、読込専用インスタンスとなるリードレプリカを増設し、負荷分散を行う
- キャッシュの利用:ElastiCacheを連携または、MySQL Memcached機能を利用し、キャッシュを増設し、読込処理の高速化を実施する
- Auroraへの移行:RDS MySQLを高速なAurora MySQLへと移行することが可能で、性能アップさせることが可能です(厳密にはスケールアウトではありません)
リードレプリカの増設
フェイルオーバー設定を有効にするだけで、容易にフェイルオーバーが利用可能となります
概要は以下となります。
- 最大5台(Auroraの場合は15台) までリードレプリカを増設可能
- マルチAZやクロスリージョンとも併用可能
- インスタンスやストレージを異なるタイプに設定可能
- 障害対応などでリードレプリカから、スタンドアロンDBインスタンスに手動で変更可能(Aurora以外)
- Auroraの場合、プライマリーインスタンスに昇格可能
RDSの構成比較
マルチAZとマルチリージョンと比較しリードレプリカはスケーリングに特化した構成方式となります。
マルチAZ配置 | マルチリージョン配置 | リードレプリカ | |
---|---|---|---|
目的 | 高可用性 | 災害復旧とローカルパフォーマンス | スケーラビリティ |
同期方式 | Aurora 以外: 同期レプリケーション Aurora: 非同期レプリケーション |
非同期レプリケーション | 非同期レプリケーション |
アクセス | Aurora 以外: プライマリインスタンスのみがアクティブ Aurora: 全インスタンスがアクティブ |
すべてのリージョンにアクセスでき、読み取りに使用できる。 | すべてのリードレプリカにアクセス可能で、読み込みのスケーリングに使用可能 |
バックアップ | Aurora 以外: 自動バックアップはスタンバイから取得される。 Aurora: 自動バックアップは共有スト レージレイヤーから取得される。 |
各リージョンで自動バックアップを取得可能 |
デフォルトではバックアップは構成されない |
配置 | 1 つのリージョン内に常に 2 つ以上のアベイラビリティーゾーンを展開 | 各リージョンに対してマルチ AZ 配置が可能 |
アベイラビリティーゾーン内、AZ 間、またはリージョン間に配置可能 |
切替 | 問題が検出された場合のスタンバイ (Aurora 以外) またはリードレプリカ (Aurora) への自動フェイルオーバー |
Aurora は、セカンダリリージョンのプロモーションをマスターに昇格可能 | 手動でスタンドアロンのデータベースインスタンスに昇格可能 (Aurora 以外) Auroraはプライマリインスタンス に昇格可能 |
キャッシュの利用
読込処理の一部をキャッシュとして保持して、高速クエリ処理を実現する構成が可能
- ElastiCacheの利用
AWSが提供するインメモリDBサービスであるElastiCacheを利用してクエリ処理をインメモリDBに保持して高速処理を可能にする
- MYSQLのオプション機能の利用
MYSQLのオプション機能にあるMemcachedを利用してインメモリキャッシュを利用する
Auroraへの移行
RDSのMySQLとPostgreはAuroraと互換性があるバージョンは容易に移行が可能で、パフォーマンスを向上させることができる
今回のテーマは以上です。