マルチAZ
複数のAZでRDSインスタンスを起動し、冗長化すること
- アクティブ - スタンバイ型のクラスター構成
- 2つの異なるAZにプライマリインスタンス(アクティブインスタンス)とセカンダリインスタンス(スタンバイインスタンス)を展開する
- エンドポイントに対するアクセスは全てプライマリインスタンス側で処理される
- 書き込みも読み取りもプライマリインスタンスで処理されるため、負荷分散の効果は無い
- プライマリインスタンスで更新されたデータはセカンダリインスタンスに完全に同期される
- プライマリインスタンスへの書き込みトランザクションをコミットした場合、セカンダリインスタンスへの同期完了確認後にコミット完了となる
- コミット完了前に障害が発生した場合はロールバックされる
- プライマリインスタンスに障害が発生した場合、エンドポイントはセカンダリインスタンスに接続され、セカンダリインスタンスがプライマリインスタンスに昇格する
自動バックアップ
2種類の自動バックアップが取得される
以下のバックアップデータを利用することで、ポイントインタイムリカバリが可能
ポイントインタイムリカバリ:特定の時刻を指定し、その時刻時点のデータを復元すること
1. スナップショット
- 1日に1回、バックアップウィンドウとして設定した時間帯に自動的に取得される
- デフォルトでは7世代保存可能(最大35代)
- 手動によるスナップショットの取得も可能
- 取得時に数秒間のI/O停止を伴う(※マルチAZ構成の場合はセカンダリインスタンスから取得されるため、プライマリインスタンスはI/O停止しない)
2. トランザクションログ
5分ごとにRDSへの全ての書き込みトランザクションを記録するログ
サブネットグループ
異なるAZを2つ以上含むサブネットの集合
RDSでインスタンスを作成する際に必ず指定する
- シングルインスタンス構成のRDSで、インスタンス障害やAZ障害が発生した場合には、指定したサブネットグループ内の別のAZのサブネットに、バックアップから新たなインスタンスを起動する
- 障害前に利用していたエンドポイントを新しく起動したインスタンスに明示的に紐付ける必要がある
リードレプリカ
ソースDB:インスタンス間でデータの同期を行う際に元になる書き込み可能なインスタンス
リードレプリカ:読み込み専用のインスタンス
- 読み込み負荷の分散が可能
- SQL Server以外で作成可能
- Auroraの場合 → リードレプリカ専用エンドポイントがロードバランサーの役割を担い、複数のリードレプリカへの接続を自動で行う
- Aurora以外の場合 → リードレプリカごとにインスタンスエンドポイントが用意されており、接続するリードレプリカを利用者側で指定する必要がある
- ソースDBと同じAZ、異なるAZ、異なるリージョンのいずれにも作成可能
- セカンダリインスタンスとは異なり、ユーザーがリードレプリカにアクセスし、読み取り処理を実行出来る
- ソースDBからリードレプリカへのデータ反映は非同期で行われる
- ソースDBへの書き込みトランザクションは、リードレプリカへのデータ反映が完了していなくてもコミット完了させる
- リードレプリカをソースDBに昇格させることも可能
アクセス制御
DBインスタンスへのアクセス制御にセキュリティグループを利用する
- EC2インスタンスに割り当てるセキュリティグループと同様
- インターネット経由でRDSにアクセスする場合、Public accessibility設定を有効化する
Public accessibility設定:有効化すると、グローバルIPアドレスがインスタンスに割り当てられる
暗号化
各データベースエンジンのSSL通信機能を利用して、通信内容を暗号化することが可能
インスタンス作成時に自動的に証明書が作成されるため、ユーザーによる証明書の設定は不要
- KMSを利用することでデータベース及びスナップショットを暗号化可能
- データベースの暗号化設定はインスタンス作成時にのみ可能
- インスタンス作成後にデータベースを暗号化する場合、インスタンスのスナップショットを取得し、スナップショットのコピー時に暗号化設定を行う
- 暗号化されたスナップショットからリストアを行うと暗号化されたデータベースを持つDBインスタンスを起動可能