おっさん社内SEエンジニアの勉強ブログ

勉強記録のブログとなります。

SAA学習-信頼性設計-RDSの概要

今回のテーマ:RDSの概要

RDS

RDSは様々なデータベースソフトウェアに対応したフルマネージドなリレーショナルデータベースとなります。
ソフトウェアの種類は以下のものなどがあります。

AWSのデータベース構築

AWSにおけるデータベース構築はEC2に自らインストールするか専用DBサービスを利用するかの2通り

ケース メリット デメリット
EC2の場合 自由にDB構成や機能を利用 構築・運用が手間
RDSの場合 構築・運用が楽(大部分がAWS側) AWS提供の範囲内での利用制限

RDSの制約事項

RDSはマネージド型で便利な反面、AWSから提供される機能範囲内で制限を受けます。
主な制限事項としては以下となります。

  • バージョンが限定される
  • キャパシティに上限がある
  • OSへのログインができない
  • ファイルシステムへアクセスできない
  • IPアドレスが固定できない
  • 一部機能が使用できない
  • 個別パッチが適用できない

RDSの特徴

  • RDS自体がマネージド型の更改用なのに加え、マルチAZによるMaster/Slave構成を容易に構築することが可能
  • 参照専用のレプリカを最大5台(Auroraは15台)設置可能で、DBの読み取り処理をスケールアウトが可能
  • 自動/手動でスナップショットを取得し、保存管理することで耐障害性を確保することが可能

f:id:In-houseSE:20210601083304p:plain

スケーリング

マネージメントコンソールやAPIからスケールアップ可能

  • インスタンスタイプを変更しスケールアップ/ダウンを実施
  • コマンドライン(AWS CLI)やAPIからストレージを数クリックで容易にスケールアップ/ダウンが可能
  • 一時的にインスタンスタイプを大きくしてその後戻すことも可能
  • ストレージサイズは拡張はできるが縮小ができない

データベースのシャーディング(水平分割)機能を利用し、RDSの書き込みをスケーリングすることが可能

f:id:In-houseSE:20210601084444p:plain

DBインスタンスの暗号化

保管時のインスタンスとスナップショットの暗号化が可能となります。 暗号化対象と暗号化方式は以下のものになります。

暗号化対象

  • DBインスタンス
  • 自動バックアップ
  • リードレプリカ
  • スナップショット

暗号化方式

  • AES-256暗号化
  • AWS KMSによる鍵管理
  • リードレプリカも同じ鍵を利用
  • インスタンス作成時にのみ設定可能
  • スナップショットのコピーの暗号化/リストア可能

RDSのスケーリング

データベースのパフォーマンス低下に対しスケーリング対応を実施することが可能
パフォーマンスの低下させる要因:アクセス多数、クエリ処理の増加など

スケーリングのタイプ

スケーリングのタイプは垂直スケーリングと水平スケーリングの2つのタイプがあります。

垂直スケーリング

  • 拡張方法(スケールアップ):メモリやCPUの追加・増強
  • 低減方法(スケールダウン):メモリやCPUの削減・低性能化

水平スケーリング

  • 拡張方法(スケールアップ):処理を行う機器/サーバー台数の増加
  • 低減方法(スケールダウン):処理を行う機器/サーバー台数の低減

スケールアップ

インスタンスタイプやサイズを変更することでスケールアップによるパフォーマンス向上を実施することが可能

実施方法 概要
インスタンスサイズの変更 現在のDBインスタンスタイプに対しサイズを高性能なものに変更することで、パフォーマンスを向上させる
インスタンスタイプの変更 現在のDB利用方式に適したDBインスタンスタイプがある場合、そのタイプに変更する
ストレージタイプの変更 ストレージタイプを高性能なタイプ(I/O処理が多い場合IOPS)に変更する

インスタンスタイプ

最初のDBがDBインスタンスを表し、その後のアルファベットと数字がインスタンスタイプになります。
インスタンスタイプの後に大きさ(micro/largeなど)の表示がインスタンスサイズとなります。

f:id:In-houseSE:20210602074707p:plain

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へと移行することが可能で、性能アップさせることが可能です(厳密にはスケールアウトではありません)

リードレプリカの増設

フェイルオーバー設定を有効にするだけで、容易にフェイルオーバーが利用可能となります
概要は以下となります。

RDSの構成比較

マルチAZとマルチリージョンと比較しリードレプリカはスケーリングに特化した構成方式となります。

マルチAZ配置 マルチリージョン配置 リードレプリカ
目的 高可用性 災害復旧とローカルパフォーマンス スケーラビリティ
同期方式 Aurora 以外: 同期レプリケーション
Aurora: 非同期レプリケーション
非同期レプリケーション 非同期レプリケーション
アクセス Aurora 以外: プライマリインスタンスのみがアクティブ
Aurora: 全インスタンスがアクティブ
すべてのリージョンにアクセスでき、読み取りに使用できる。 すべてのリードレプリカにアクセス可能で、読み込みのスケーリングに使用可能
バックアップ Aurora 以外: 自動バックアップはスタンバイから取得される。
Aurora: 自動バックアップは共有スト
レージレイヤーから取得される。
各リージョンで自動バックアップを取得可能
デフォルトではバックアップは構成されない
配置 1 つのリージョン内に常に 2 つ以上のアベイラビリティーゾーンを展開 各リージョンに対してマルチ AZ 配置が可能
アベイラビリティーゾーン内、AZ 間、またはリージョン間に配置可能
切替 問題が検出された場合のスタンバイ
(Aurora 以外) またはリードレプリカ
(Aurora) への自動フェイルオーバー
Aurora は、セカンダリリージョンのプロモーションをマスターに昇格可能 手動でスタンドアロンのデータベースインスタンスに昇格可能 (Aurora 以外)
Auroraはプライマリインスタンス に昇格可能

キャッシュの利用

読込処理の一部をキャッシュとして保持して、高速クエリ処理を実現する構成が可能

  • ElastiCacheの利用

AWSが提供するインメモリDBサービスであるElastiCacheを利用してクエリ処理をインメモリDBに保持して高速処理を可能にする

f:id:In-houseSE:20210604103145p:plain

  • MYSQLのオプション機能の利用

MYSQLのオプション機能にあるMemcachedを利用してインメモリキャッシュを利用する

Auroraへの移行

RDSのMySQLとPostgreはAuroraと互換性があるバージョンは容易に移行が可能で、パフォーマンスを向上させることができる

今回のテーマは以上です。