RDSとはAmazonがクラウド上で提供しているRDBMSです。
下記のデータベースエンジン群からインスタンス作成を行うことができます。
- Amazon Aurora
- PostgreSQL
- MySQL
- MariaDB
- Oracle データベース
- SQL Server
システム開発時にRDBMSとしてRDSを使用するにはいくつかのメリットが存在します。
高いスケーラビリティ
インスタンスストレージ
RDSはパフォーマンス向上のため3種類のストレージタイプを提供しています。
汎用 SSD
汎用SSDは、ほとんどのデータベースワークロードで使用できる、コスト効果に優れたストレージです。
汎用SSDではどのくらいの数のリクエストまでは一定のパフォーマンスを保てるかが決まっている中で、I/Oのバースト機能を利用することでバランスを保つことができます。
汎用SSDはデフォルトで540万I/Oクレジットの初期I/Oクレジットバランスを受け取ります。
この値は30分間で3000IOPSのパフォーマンスバーストを維持するために十分であるため、さまざまなワークロードで最適なストレージです。
しかしながら、ワークロードによっては、3,000 IOPSのバーストストレージクレジットバランスが枯渇する場合があります。
※I/Oクレジットは毎秒たまるが、それを上回るI/Oリクエストが発生すると枯渇の可能性が生じる
そのため、ストレージサイズによってベースパフォーマンス(IOPS)やバースト期間を確認し、ワークロードのニーズを満たすようにストレージ容量を計画する必要があります。
プロビジョンドIOPS
予測可能なパフォーマンスと一貫して低いレイテンシーを実現する必要がある本稼働アプリケーションには、プロビジョンドIOPSストレージが推奨されています。
プロビジョンドIOPSストレージは、一貫したパフォーマンスを要件とするオンライントランザクション処理 (OLTP) ワークロード向けに最適化されています。
※入出金処理システム等
マグネティック
下位互換性としてサポートされているストレージ。
利用にはいくつかの制限が設けられており、非推奨。
リードレプリカ
DBインスタンスのレプリカDBとして読み取り処理をスケールアウトすることが可能。
※インスタンスやストレージをマスターと異なるタイプに設定することも可能
読み取りクエリをアプリケーションからリードレプリカにルーティングすることにより、1つのDBインスタンスのキャパシティーを伸縮自在にスケールし、ワークロードを緩和できます。
必要な場合、リードレプリカをスタンドアロンのDBインスタンスに昇格させることも可能です。
リードレプリカは Amazon RDS for MySQL、MariaDB、PostgreSQL、Amazon Aurora で利用できます。
可用性と耐久性
マルチAZ配置
RDSはマルチAZ配置にすることで高い可用性を実現することができます。
マルチAZ配置ではインスタンス作成時に、本稼働用とは異なるAZにスタンバイインスタンスにデータを複製します。
もしも本稼働側のAZで障害が発生した際には、異なるAZに配置されているスタンバイインスタンスに自動でフェイルオーバーしますので、
DBのダウンタイムが極めて短くなります。
自動フェイルオーバーはAZの機能停止以外にも下記の場合に適用されます。
- プライマリ DB インスタンスのエラー
- DB インスタンスのサーバータイプ変更
- DB インスタンスのオペレーティングシステムでソフトウェアのパッチ適用中
- DB インスタンスの手動フェイルオーバーが [Reboot with failover] を使用して開始された
バックアップ
RDSは自動バックアップ機能によりスナップショットを作成し保存しています。
※新しいDBインスタンスに対してデフォルトで有効
スナップショットでは個々のデータベースだけではなく、そのDBインスタンス全体をバックアップしているため、インスタンスの復元が容易です。
※スナップショットから既存のDBインスタンスに対する復元は不可
自動バックアップはインスタンスのバックアップウィンドウ中にに実施され、指定したバックアップ保持期間に従ってDBインスタンスの自動バックアップを保存します。
また、スナップショットはユーザの好きなタイミングで手動で作成することは可能なため、汎用性があります。
リストア ポイント イン タイム
また、RDSではDBインスタンスを特定の時点に復元し、新しいDBインスタンスを作成することができます。
DBインスタンスを特定の時点に復元するには、5分ごとにAmazon S3にアップロードしているトランザクションログを利用します。
DB インスタンスの復元可能な直近の時間を調べるには、AWS CLI の describe-db-instances コマンドを使用し、
DBインスタンスの [LatestRestorableTime] (=DBインスタンスの最新の復元時間)フィールドに返される値を参照します。
取得したこの時間から最新の復元時間にDBインスタンスを復元することができます。