Amazon RDS

MySQL、PostgreSQL、Oracle、SQL Server などの主要なリレーショナルデータベースをフルマネージドで運用できるサービス

概要

Amazon Relational Database Service (RDS) は、クラウド上でリレーショナルデータベースのセットアップ、運用、スケーリングを簡素化するフルマネージドサービスです。MySQL、PostgreSQL、MariaDB、Oracle、SQL Server、Amazon Aurora の 6 つのデータベースエンジンに対応しています。OS のパッチ適用、データベースのバックアップ、ポイントインタイムリカバリ、Multi-AZ 配置によるフェイルオーバー、リードレプリカによる読み取りスケーリングなどの運用タスクを AWS が自動的に処理します。RDS Proxy を使えばデータベース接続のプーリングと管理を効率化でき、Lambda などのサーバーレスアプリケーションからの接続急増にも対応できます。インスタンスクラスは db.t3.micro (2 vCPU、1 GB メモリ) から db.r6g.16xlarge (64 vCPU、512 GB メモリ) まで幅広く、ワークロードの規模に応じて選択できます。

Multi-AZ フェイルオーバーとバックアップ戦略

RDS の Multi-AZ 配置を有効にすると、プライマリとは別の AZ にスタンバイが自動作成されます。プライマリに障害が発生した場合、DNS レコードの切り替えにより 60-120 秒程度でフェイルオーバーが完了します。自動バックアップは毎日のスナップショットとトランザクションログの継続記録で構成され、最大 35 日間の任意の時点にデータベースを復元できます (ポイントインタイムリカバリ)。リードレプリカを作成すれば読み取りクエリを分散でき、クロスリージョンリードレプリカは災害復旧 (DR) 対策としても機能します。RDS は MySQL、PostgreSQL、MariaDB、Oracle、SQL Server、Aurora の 6 エンジンを単一サービスで提供しており、Azure のようにエンジンごとに別サービス (Azure SQL Database、Azure Database for MySQL/PostgreSQL) を使い分ける必要がありません。

RDS Proxy とサーバーレス接続の最適化

Lambda などのサーバーレスアプリケーションから RDS に接続する場合、関数の同時実行数に比例してデータベース接続が急増し、接続数の上限に達する問題が起きがちです。RDS Proxy はこの課題を解決するコネクションプーリングサービスで、Lambda からの大量の短命な接続をプールして再利用し、データベースへの実接続数を抑制します。IAM 認証との統合により、パスワードを Secrets Manager で管理しつつ接続時の認証を自動化できます。フェイルオーバー時の接続切り替えも RDS Proxy が透過的に処理するため、アプリケーション側のリトライロジックが簡素化されます。リレーショナルデータベースの専門書 (Amazon) では、こうした接続管理の設計パターンが詳しく解説されています。

標準 RDS と Aurora の選択基準

MySQL または PostgreSQL を使う場合、標準 RDS と Aurora のどちらを選ぶかが重要な判断ポイントです。Aurora は MySQL の最大 5 倍、PostgreSQL の最大 3 倍のスループットを実現し、ストレージは 10 GB から 128 TB まで自動拡張されます。リードレプリカも最大 15 個まで作成でき、標準 RDS の 5 個を大きく上回ります。一方、Aurora の料金は標準 RDS より約 20% 高くなります。小規模なアプリケーションやコスト重視の場合は標準 RDS、高いパフォーマンスと可用性が求められるミッションクリティカルなワークロードには Aurora が適しています。Aurora Serverless v2 を選べば、トラフィックに応じてキャパシティが自動スケールし、アイドル時のコストを最小化できます。リザーブドインスタンス (1 年または 3 年) を適用すれば最大 69% の割引が得られるため、ベースラインの負荷が安定している環境ではコスト削減効果が大きいです。

共有するXB!