目次

Amazon RDS 完全ガイド 2026

初心者から実務者向けの包括的解説

Amazon RDS(Relational Database Service) は、AWS が提供する フルマネージドリレーショナルデータベース基盤 です。MySQL・PostgreSQL・MariaDB・Oracle・SQL Server・IBM Db2 など複数のエンジンをサポートし、OS・DB インストール・バックアップ・フェイルオーバーを AWS が管理します。本ドキュメントは RDS の本質・アーキテクチャ・運用実務・最新動向を体系的に解説する包括的ガイドです。

ドキュメントの目的

本ガイドは以下を対象としています。

  • 初心者向け: RDS とは何か、なぜ必要かを学びたい方
  • 開発者向け: RDS インスタンスを構築・運用したい方
  • DBA / インフラ向け: 高可用性・セキュリティ・パフォーマンスを実装したい方
  • 意思決定者向け: RDS vs Aurora vs セルフホストの選択判断

2026 年の RDS エコシステム

  • RDS Custom for Oracle/SQL Server:OS・DB レベルのアクセスを必要とする場合に対応
  • Blue/Green Deployments:ダウンタイムゼロでメジャーアップグレード実行
  • RDS Optimized Reads/Writes:読み書きパフォーマンス最適化
  • Aurora DSQL:PostgreSQL 互換・リージョン間同期・超低レイテンシ
  • Graviton4 プロセッサ対応:CPU 性能向上・コスト削減
  • Amazon Bedrock 統合:生成 AI による異常検知・分析の自動化
  • Performance Insights 拡張:AI による自動チューニング提案

定義

Amazon 公式による定義:

“Amazon RDS makes it easy to set up, operate, and scale a relational database in the cloud.”

RDS は、データベース管理の運用負荷を削減しながら、エンタープライズレベルの可用性・セキュリティ・パフォーマンスを提供します。

エディション

  • RDS Standard版:オープンソースエンジン向けの標準機能
  • RDS Enhanced版:Performance Insights・Enhanced Monitoring などの高度な監視機能
  • RDS Custom版:OS・DB 直接アクセスが必要な商用エンジン(Oracle、SQL Server)向け

目次

  1. 概要
  2. RDS が解決する課題
  3. 主な特徴
  4. アーキテクチャ
  5. 対応エンジン
  6. RDS vs Aurora の違い
  7. インスタンスクラス
  8. ストレージ
  9. 主要ユースケース
  10. 高可用性
  11. バックアップとリカバリ
  12. Read Replica
  13. RDS Proxy
  14. RDS Custom
  15. セキュリティ
  16. モニタリング
  17. メンテナンスとアップグレード
  18. 他の類似ツールとの比較
  19. クライアントとエコシステム
  20. ベストプラクティス
  21. トラブルシューティング
  22. 2025-2026 最新動向
  23. 学習リソース
  24. 実装例・活用シーン
  25. 導入ロードマップ
  26. 実装チェックリスト
  27. まとめ
  28. 参考文献

概要

初心者向けメモ: RDS は「データベース自体は管理しない」サービスです。OS・パッチ・バックアップ・フェイルオーバー を AWS が自動管理し、開発者は SQL クエリの実装 に集中できます。EC2 上で MySQL を自前管理する場合と比べ、運用負荷は劇的に削減されます。

RDS は、エンタープライズグレードのリレーショナルデータベースを、自社で保有・管理することなく、AWS のマネージドサービスとして利用できるサービスです。公式ドキュメントに基づくと、以下の主要な価値を提供します:

RDS の位置づけ

【図1】AWS データベースサービスの選択フロー:

graph TD
    A[データベース選択] -->|リレーショナル| B{スケール・可用性要件}
    A -->|キーバリュー| C[DynamoDB]
    A -->|分析| D[Redshift]
    A -->|検索| E[OpenSearch]
    B -->|標準<br/>1-2分フェイルオーバー| F[RDS]
    B -->|高速<br/><30秒フェイルオーバー| G[Aurora]
    B -->|OS直接アクセス| H[RDS Custom]
    B -->|セルフマネージド| I[EC2]

RDS が解決する課題

1. DB 運用管理の複雑性

課題: EC2 上で自前 MySQL を管理する場合

月次メンテナンス
├─ OS セキュリティパッチ(計画・テスト・本番適用)
├─ DB エンジンアップグレード(互換性確認・ダウンタイム調整)
├─ ディスク容量監視・拡張
├─ バックアップスケジュール管理
├─ リカバリテスト・PITR 検証
└─ レプリケーション ラグ監視

RDS による解決: ✅ すべて自動管理

2. 高可用性・フェイルオーバーの構築

課題: Multi-AZ 構成を自前で実装

  • 要件:プライマリ障害時 < 2 分で自動フェイルオーバー
  • → 同期レプリケーション設定・ネットワーク監視・自動フェイルオーバースクリプト
  • → 数週間の設計・実装・テスト工数

RDS による解決: ✅ チェックボックス 1 つで Multi-AZ が有効化

3. バックアップ・PITR の複雑性

課題: リカバリポイント目標(RPO)・リカバリ時間目標(RTO)の達成

RDS による解決:

  • ✅ 自動日次バックアップ + トランザクションログ保持で任意の秒単位に復元可能
  • ✅ 差分バックアップで保存容量を圧縮
  • ✅ クロスリージョンバックアップで災害対応

主な特徴

特徴 説明
6 つのエンジン対応 MySQL, PostgreSQL, MariaDB, Oracle, SQL Server, IBM Db2
マルチ AZ デプロイ 自動フェイルオーバー(1〜2 分)で高可用性
読み取りスケーリング リードレプリカ(最大 5 個)で読み負荷分散
自動バックアップ・PITR 保持期間内(最大 35 日)の任意の時点に復元
セキュリティ統合 IAM 認証、KMS 暗号化、ネットワーク分離
パフォーマンス監視 Performance Insights・Enhanced Monitoring・CloudWatch 統合
ダウンタイムゼロアップグレード Blue/Green Deployment でメジャーバージョンアップ
RDS Proxy Lambda/ECS など短命プロセスの接続プール集約
ストレージ自動スケーリング ディスク逼迫時の自動拡張
監査ログ CloudWatch Logs へのエクスポート対応

アーキテクチャ

初心者向けメモ: RDS は 3 層構造 です。アプリケーション層(EC2、ECS など)→ RDS インスタンス(DB エンジン実行)EBS ストレージ(データ保存) という流れです。マルチ AZ 構成では、プライマリとスタンバイが別 AZ に配置 され、プライマリ障害時に自動フェイルオーバーします。

【図2】RDS マルチ AZ アーキテクチャ:

graph TD
    subgraph AZ1["AZ-1(us-east-1a)"]
        EC2["EC2 / ECS"]
        EC2 -->|TCP 3306| Primary["RDS Primary<br/>MySQL 8.0"]
        Primary -->|同期複製| EBS1["EBS gp3<br/>SSD"]
    end
    subgraph AZ2["AZ-2(us-east-1b)"]
        Standby["RDS Standby<br/>MySQL 8.0"]
        Standby -->|EBS gp3<br/>SSD| EBS2["EBS gp3<br/>SSD"]
    end
    Primary -->|同期複製| Standby
    
    subgraph Monitor["モニタリング層"]
        CW["CloudWatch<br/>Performance Insights"]
    end
    
    Primary --> Monitor
    
    style Primary fill:#4CAF50,stroke:#2E7D32,color:#fff
    style Standby fill:#BDBDBD,stroke:#616161,color:#fff

RDS インスタンスのコンポーネント

コンポーネント 役割
DB Instance MySQL・PostgreSQL などのエンジンが稼働するコンピュートインスタンス
DB Subnet Group VPC 内のプライベートサブネットを複数指定(Multi-AZ は最低 2 サブネット)
Parameter Group エンジン固有の設定(max_connections、character_set など)
Option Group Transparent Data Encryption(TDE)など追加機能
Security Group インバウンドルール(ポート 3306、5432 など)で通信制御
Enhanced Monitoring Agent OS レベルメトリクス(CPU steal、I/O など)を 1 秒間隔で収集
Backup 自動バックアップ + 手動スナップショット
Read Replica 非同期複製レプリカで読み負荷分散

対応エンジン

初心者向けメモ: 「どのエンジンを選ぶ?」という質問が最初にあります。基本は PostgreSQL(高機能・拡張性)か MySQL(シンプル・広く普及)のいずれかです。レガシーシステムが Oracle なら RDS Oracle を選びます。

エンジン 特性 推奨シーン ライセンス
MySQL オープンソース、シンプル、Web 標準 LAMP スタック、SaaS、スタートアップ GPL-2.0
PostgreSQL 高機能 SQL、地理情報、JSON、拡張性 エンタープライズ、複雑な分析 PostgreSQL License
MariaDB MySQL フォーク、MySQL 互換 MySQL からの段階的移行 GPL-2.0
Oracle Database 商用、高機能、APEX オンプレ Oracle 移行 商用ライセンス
SQL Server Windows 統合、T-SQL、.NET 親和性 Windows エコシステム 商用ライセンス
IBM Db2 エンタープライズ、高可用性 Db2 ユーザー 商用ライセンス

バージョン選択ガイド

  • 新規構築 → 最新安定版を選択(MySQL 8.0+、PostgreSQL 15+)
  • レガシー移行 → 既存バージョンと互換性を確認してから選択
  • セキュリティサポート → AWS がサポート期間を明示(EOL 日時を確認)

RDS vs Aurora の違い

初心者向けメモ: RDS と Aurora はどちらも AWS のマネージドデータベースですが、アーキテクチャが異なります。RDS は個別の DB インスタンスをマネージドする「従来型」、Aurora はクラスタ型で読み取りスケーリングに優れています。

観点 RDS Aurora
アーキテクチャ 単一インスタンス + リードレプリカ 分散クラスタ(共有ストレージ)
フェイルオーバー時間 1〜2 分 < 30 秒
ストレージ 手動拡張(Auto Scaling あり) 自動拡張(最大 128 TiB)
リードレプリカ数 最大 5 個 最大 15 個
スループット エンジン依存 MySQL 比 5 倍、PostgreSQL 比 3 倍(公称)
Serverless ✅(Aurora Serverless v2)
対応エンジン MySQL, PostgreSQL, MariaDB, Oracle, SQL Server, Db2 MySQL / PostgreSQL 互換のみ
コスト 低〜中 やや高
Multi-AZ Cluster リードレプリカ向け ビルトイン

選択フロー

高可用性が最優先(< 30 秒フェイルオーバー)
    → Aurora
    
Oracle / SQL Server / Db2 が必須
    → RDS Custom
    
標準的な MySQL / PostgreSQL で、1〜2 分フェイルオーバーが許容
    → RDS
    
開発環境・テスト・低コスト重視
    → RDS Single-AZ

インスタンスクラス

初心者向けメモ: インスタンスクラスは「DB サーバーの CPU・メモリ」を決めます。db.t3.micro(小)から db.r6i.16xlarge(大)まで、ワークロードに応じて選択します。

4 つのカテゴリ

1. 汎用(db.t3/db.t4g)- Burstable

クラス vCPU メモリ 用途
db.t3.micro 1 1 GB 開発・テスト・小規模ブログ
db.t3.small 1 2 GB スタートアップ・低トラフィック
db.t3.medium 2 4 GB 中規模 Web アプリ
db.t3.large 2 8 GB トラフィック増加期

特徴: CPU 常時使用しない場合に向け、CPU クレジット で バースト性能を提供

2. メモリ最適化(db.r6i / db.r6g)- Graviton2

クラス vCPU メモリ 用途
db.r6i.large 2 16 GB キャッシュ指向ワークロード
db.r6i.xlarge 4 32 GB OLAP・複雑な JOIN
db.r6i.2xlarge 8 64 GB 大規模分析・数百万行スキャン

特徴: RAM/ CPU 比が高く、メモリ内処理の多いワークロードに最適

3. ストレージ最適化(db.i3)

クラス vCPU メモリ ローカルストレージ
db.i3.large 2 15.25 GB 1.9 TB NVMe SSD
db.i3.xlarge 4 30.5 GB 3.8 TB NVMe SSD

特徴: ローカル NVMe SSD で超低レイテンシ I/O(临時テーブル、ログ書き込み向け)

4. Graviton プロセッサ対応(db.t4g / db.r6g / db.m6g)

クラス 特徴
db.t4g.micro AWS 独自 Graviton2 プロセッサ、コスト 40% 削減
db.r6g.large 汎用で 30% 高性能

推奨ルール:

開発環境           → db.t3.micro または db.t4g.micro
小規模 Web APP     → db.t3.small / medium
中規模 ERP・CRM    → db.m6i.large
大規模 DWH・集計   → db.r6i.2xlarge / 4xlarge
キャッシュ指向     → db.r6i.xlarge

ストレージ

初心者向けメモ: ストレージは「IOPS(1秒間の入出力操作数)」が重要です。DB ワークロードは IOPS 指向なので、gp3 以上を推奨します。

ストレージタイプ IOPS スループット 推奨ユースケース コスト
gp3 3,000〜16,000 125〜1,000 MiB/s 多くの DB ワークロード(推奨) 最安
gp2 100〜64,000(サイズ連動) 128〜1,000 MiB/s レガシー(gp3 推奨)
io1 1,000〜64,000 〜4,000 MiB/s OLTP・高 IOPS 本番
io2 最大 256,000 〜4,000 MiB/s 最高性能(一部エンジン) 最高
磁気(st1) 非推奨(レガシーのみ) 最安だが非推奨

ストレージ自動スケーリング

{
  "AllocatedStorage": 100,        // 初期容量
  "MaxAllocatedStorage": 1000,    // スケーリング上限
  "StorageType": "gp3"
}

自動スケーリングの条件:

  • ディスク使用率 > 90% かつ
  • スケーリングから 6 時間経過
  • → 自動的に ストレージを 10% 増加(または最大値まで)

主要ユースケース

初心者向けメモ: RDS は「汎用リレーショナルDB基盤」です。以下の 15 パターンは実務でよく見かけるシーンです。自分の業務にあてはまるものを見つけ、そこから詳細を学ぶのが効率的です。

1. CRUD アプリケーションの基盤

Web サービス・モバイルアプリのバックエンド DB。最もオーソドックスなユースケース。

  • Flutter app → API Gateway → Lambda → RDS PostgreSQL

2. SaaS マルチテナント

顧客ごとのデータを同一 DB で管理。テナント ID でデータ分離。

顧客A ┐
顧客B ├→ RDS(テーブル:customers, tenant_data)→ クエリフィルタリング
顧客C ┘    (WHERE tenant_id = ?)

3. リアルタイム分析・ダッシュボード

ビジネスメトリクス(売上、ユーザー数、コンバージョン率)を秒単位で更新。

トランザクション DB(RDS PostgreSQL)
  ↓(INSERT/UPDATE)
集計テーブル(MATERIALIZED VIEW)
  ↓
Grafana ダッシュボード

4. マイグレーション基盤

オンプレミス Oracle → RDS Oracle。AWS DMS で複製。

  • On-Premises Oracle ←→ [AWS DMS] ←→ RDS Oracle(初期同期)
  • ↓(CDC)
  • 変更分レプリケーション

5. CICD テスト・統合環境

Pull Request ごとに DB インスタンスを自動起動・削除。

GitLab CI
  ↓
CloudFormation / Terraform
  ↓
RDS(テスト用) → テスト実行 → インスタンス削除

6. 開発環境・ローカルサンドボックス

開発者が VPN 経由で RDS に接続。

  • 踏み台 EC2(Bastion)
  • RDS Private Subnet

7. Read Replica による読み取り分散

プライマリの読み負荷を分散。レポート生成・分析クエリ用。

プライマリ(書き込み)
    ↓(非同期複製)
リードレプリカ 1(読み取り専用)
リードレプリカ 2(読み取り専用)
リードレプリカ 3(読み取り専用)

8. ハイブリッド構成(オンプレ + AWS)

オンプレミス DB + RDS リードレプリカで災害対応。

  • On-Premises MySQL ←→ RDS MySQL(リードレプリカ)
  • 本番 クロスリージョンで災害対応

9. 監査ログ・コンプライアンス

取引履歴・不正検知ログを RDS に記録。PITR で任意時点に監査。

トランザクション
  ↓(audit trigger)
RDS audit_log テーブル
  ↓
CloudWatch Logs(保管)
  ↓
SIEM 分析

10. データウェアハウス(小〜中規模)

Snowflake / BigQuery 導入前の段階。PostgreSQL で 100GB 程度の分析。

ソースシステム
  ↓(ETL)
RDS PostgreSQL
  ↓(複雑 SQL 分析)
BI ツール(Tableau、Grafana)

11. リアルタイムノーティケーション

イベント駆動型の通知。トリガーで SQS/SNS へ発火。

INSERT INTO user_events → DB トリガー
  ↓
Lambda 呼び出し(Aurora Serverless + 
  ↓
Slack 通知

12. セッション・キャッシュストア

HTTP セッションを RDS で永続化(Redis / ElastiCache も選択肢)。

Web サーバー
  ↓(セッション保存)
RDS PostgreSQL
  ↓
マルチサーバー間で共有

13. IoT センサーデータ集約

温度・湿度・位置情報を時系列で保存・分析。

  • IoT デバイス → MQTT → Lambda → RDS PostgreSQL
  • ↓(JSON フィールド)
  • Grafana(地図表示)

14. Aurora への段階的移行

RDS MySQL から Aurora MySQL へ、読み取りレプリカを段階的に昇格。

RDS MySQL(プライマリ)
   ↓(リードレプリカ)
Aurora MySQL(読み取り)
   ↓(昇格)
Aurora MySQL(新プライマリ)

15. マルチリージョン・ディザスタリカバリ

クロスリージョンリードレプリカで DR 構成を自動化。

  • AWS us-east-1: RDS PostgreSQL(Primary)
  • ↓(非同期複製)
  • AWS eu-west-1: RDS PostgreSQL(Read Replica)→ 昇格可能

高可用性

初心者向けメモ: 「高可用性」とは「障害時に自動復旧する」という意味です。RDS は 3 つのレベルで可用性を提供します:Single-AZ(基本)→ Multi-AZ DB Instance(中程度)→ Multi-AZ DB Cluster(高)。

1. Single-AZ(単一 AZ)

単一の可用性ゾーンに DB を配置。開発環境や一時的なテストのみ

特性
構成 DB インスタンス 1 個
故障対応 AWS が自動復旧(通常 1〜3 時間)
RPO 最後のバックアップ時点
RTO 1〜3 時間(バックアップから復元)
SLA 提供なし
コスト 最安

2. Multi-AZ DB Instance(同期スタンバイ)

プライマリ + 同期スタンバイ を別 AZ に配置。自動フェイルオーバー対応。

  • 【AZ-1】 【AZ-2】
  • Primary DB ←→ Standby DB(同期複製)
  • (書き込み) (待機中)
特性
フェイルオーバー時間 通常 60〜120 秒
RPO 0(同期複製)
RTO < 2 分
スタンバイ読み取り ❌ 不可
SLA 99.95%

フェイルオーバーのトリガー:

- プライマリ DB インスタンス障害
- プライマリのストレージ障害
- AZ レベルの障害
- AWS が実施する定期メンテナンス
- 明示的なフェイルオーバーテスト(実施可能)

3. Multi-AZ DB Cluster(3 AZ、複数リーダー)

ライター 1 + リーダー 2 を 3 つの AZ に分散。スタンバイから読み取り可能

  • 【AZ-1】 【AZ-2】 【AZ-3】
  • Writer ←→ Reader 1 ←→ Reader 2(すべて同期複製)
  • (読み書き) (読み取り) (読み取り)
特性
フェイルオーバー時間 < 35 秒
RPO 0
RTO < 35 秒
スタンバイ読み取り ✅ Reader 1・2 から読み取り可能
読み取りスケール ライターのロードを削減
SLA 99.99%
コスト Multi-AZ Instance の約 2.5 倍

選択フロー

開発・テスト環境
  → Single-AZ(コスト最小)

本番環境(SLA 99.95% で十分)
  → Multi-AZ DB Instance
  
高可用性重視(SLA 99.99%、読み取りスケール必要)
  → Multi-AZ DB Cluster
  
超高可用性(フェイルオーバー < 30 秒)
  → Aurora(推奨)

バックアップとリカバリ

初心者向けメモ: RDS のバックアップは 3 層構成です:自動バックアップトランザクションログ保持PITR で任意時点に復元。これにより、データ損失から数秒単位で復旧できます。

自動バックアップ

毎日バックアップウィンドウ(デフォルト 03:00 UTC)
  ↓
差分スナップショット + トランザクションログ保持
  ↓
保持期間:1〜35 日(デフォルト 7 日、0 = 無効)
特性 説明
実行タイミング 毎日バックアップウィンドウ内(ユーザー指定可)
保持期間 1〜35 日(デフォルト 7 日)
ストレージコスト 100GB/月 までは DB インスタンス費用に含まれる。超過分は追加課金
PITR 保持期間内の任意の秒単位で復元可能
自動削除 保持期間後に自動削除。DB 削除時は別途に最終スナップショット取得可能

手動スナップショット

明示的に作成したバックアップ。永遠に保持(削除するまで)。

AWS Management Console / AWS CLI
  ↓
aws rds create-db-snapshot --db-instance-identifier mydb
  ↓
スナップショット作成(1 分〜数分)
  ↓
S3 に暗号化され保存

ユースケース:

  • DB スキーマ変更前の安全策
  • メジャーアップグレード前の保険
  • 別リージョン・別アカウントへの複製

PITR(Point-in-Time Recovery)

「誤った DELETE を 10 分前の状態に戻したい」 → PITR で解決。

2026-04-26 14:00:00 UTC   DELETE FROM users WHERE id = 1;(←誤り)
           ↓ 気付く
2026-04-26 14:05:00 UTC   復元開始(PITR で 14:02:00 UTC)
           ↓(復元完了)
2026-04-26 14:07:00 UTC   新しい DB インスタンス起動
           ↓
           正常なデータを確認 → スウィッチオーバー

保持期間の推奨値:

環境 推奨保持期間 理由
開発 1 日 コスト削減
本番(SaaS) 7〜14 日 誤消去検知時間
金融・医療 35 日 コンプライアンス

クロスリージョン バックアップ

災害対応 用の自動複製。別リージョンに定期同期。

aws rds modify-db-instance \
  --db-instance-identifier mydb \
  --backup-retention-period 7 \
  --copy-backups-to-region eu-west-1

Read Replica

初心者向けメモ: リードレプリカは「読み取り専用コピー」です。プライマリからの 非同期複製 なので、ラグが発生しますが、読み負荷を大幅に削減できます。

リードレプリカの特性

特性 説明
複製方式 非同期(プライマリからの遅延複製)
最大数 5 個(MySQL/MariaDB/PostgreSQL)
レプリケーション ラグ 通常ミリ秒~数秒、ネットワーク遅延に依存
読み取り専用 リードレプリカへの書き込みは不可
クロスリージョン 可能(災害対応・地理的読み取り分散)
スナップショット リードレプリカから独立したスナップショット可能
昇格 リードレプリカを新プライマリに昇格可能(ポイントインタイム復元不可になる)

利用シーン

【シーン1】読み取り負荷分散

プライマリ(本番書き込み)→ OLTP
    ↓(非同期複製)
リードレプリカ 1 → 分析クエリ
リードレプリカ 2 → BI ツール連携
リードレプリカ 3 → 統計集計
  • 【シーン2】クロスリージョン災害対応
  • AWS us-east-1: RDS PostgreSQL(Primary)
  • ↓(非同期複製)
  • AWS eu-west-1: RDS PostgreSQL(Read Replica) → フェイルオーバー時に昇格

レプリケーション ラグの監視

モニタリング対象メトリクス:
- ReplicationLag(秒単位)
  → 2 秒以上が続く場合は警告
  
原因:
- 重いトランザクション実行
- ネットワーク遅延
- リードレプリカの CPU 高負荷

RDS Proxy

初心者向けメモ: RDS Proxy は「DB 接続のプール管理ツール」です。Lambda・ECS など短命プロセスが大量の接続要求を送るとき、Proxy が接続を集約して DB 負荷を削減します。

RDS Proxy のアーキテクチャ

graph LR
    subgraph App["アプリケーション層"]
        L1["Lambda 1"]
        L2["Lambda 2"]
        L3["Lambda 3"]
    end
    subgraph Proxy["RDS Proxy(接続プール)"]
        Pool["接続プール<br/>(最大 1000)"]
    end
    subgraph DB["DB インスタンス"]
        RDS["RDS MySQL<br/>(接続数制限)"]
    end
    
    L1 -->|短命接続| Pool
    L2 -->|短命接続| Pool
    L3 -->|短命接続| Pool
    Pool -->|効率的な接続再利用| RDS
    
    style Pool fill:#FFC107,stroke:#FF6F00,color:#000

主要メリット

メリット 効果
接続数削減 Lambda 1000 並列実行 → Proxy で 10〜50 接続に集約
データベース負荷削減 CPU・メモリ削減(接続管理オーバーヘッド低下)
アプリケーション修正不要 アプリは Proxy をエンドポイントとして参照(透過的)
IAM 認証統合 パスワード不要の IAM トークン認証
Secrets Manager 統合 シークレット自動ローテーション対応
接続の再利用 TCP コネクションを複数アプリで共有

対応エンジン

✅ MySQL 5.7+
✅ PostgreSQL 11+
✅ MariaDB 10.2+

❌ Oracle(非対応)
❌ SQL Server(非対応)

RDS Custom

初心者向けメモ: RDS Custom は「OS・DB レベルの直接アクセス」を必要とする場合の選択肢です。通常 RDS で十分ですが、Oracle・SQL Server で特殊な設定が必要な場合に活用します。

RDS Custom の位置づけ

  • フルマネージド ←→ セルフマネージド
  • RDS RDS Custom EC2
  • (推奨) (特殊要件) (制限なし)

対応エンジン

  • ✅ Oracle Database(11g 以降)
  • ✅ SQL Server(2016 以降)
  • ❌ MySQL、PostgreSQL など(RDS を使用)

RDS Custom が必要な例

  • Oracle パラメータの OS レベル設定
  • SQL Server の Windows 認証
  • カスタム Oracle データベースリンク
  • 特定の ODBC ドライバのインストール

セキュリティ

初心者向めメモ: RDS のセキュリティは 3 層 です:ネットワーク分離通信暗号化認証・監査。本番環境は全て有効化します。

1. ネットワーク分離

プライベートサブネット配置が基本。

┌──────────────────────────────────────────────────────┐
│ VPC                                                  │
│  ┌─────────────────────────────────────────────────┐ │
│  │ Public Subnet(NAT Gateway)                    │ │
│  │  └─ EC2(Bastion)                              │ │
│  │       ↓(プライベート通信)                      │ │
│  │  ┌──────────────────────────────────────────┐  │ │
│  │  │ Private Subnet                           │  │ │
│  │  │  └─ RDS Security Group(Port 3306)     │  │ │
│  │  │     └─ RDS MySQL Instance               │  │ │
│  │  └──────────────────────────────────────────┘  │ │
│  └─────────────────────────────────────────────────┘ │
│                                                      │
│ Security Group Rule:                               │
│ Ingress: TCP 3306 from EC2 SG                     │
│ Egress: すべてを拒否                              │
└──────────────────────────────────────────────────────┘

2. 転送時暗号化(TLS/SSL)

アプリケーション ↔ RDS 間の通信を暗号化。

エンジン デフォルト 設定
MySQL TLS 1.2 Parameter Group で require_secure_transport = ON
PostgreSQL デフォルト無効 Parameter Group で rds.force_ssl = 1
Oracle デフォルト無効 SQL*Net で SSL 設定
# MySQL の例
mysql -h mydb.c123abc456.us-east-1.rds.amazonaws.com \
       --ssl-mode=REQUIRED \
       -u admin -p

3. 保存時暗号化(KMS)

DB ストレージの暗号化。作成時に指定、後変更不可。

AWS KMS マスターキー
    ↓(Data Encryption Key で暗号化)
EBS ボリューム
    ↓(暗号化された DB データ)
RDS ストレージ

設定:

aws rds create-db-instance \
  --db-instance-identifier mydb \
  --storage-encrypted \
  --kms-key-id arn:aws:kms:us-east-1:123456789:key/12abc34d-5e6f-78gh-90ij-1k2l3m4n5o

4. IAM 認証

パスワード不要の IAM トークン認証(MySQL 5.6.34+、PostgreSQL 9.5+)。

# トークン生成
TOKEN=$(aws rds generate-db-auth-token \
  --hostname mydb.c123abc456.us-east-1.rds.amazonaws.com \
  --port 3306 \
  --region us-east-1 \
  --username iamuser)

# MySQL 接続
mysql -h mydb.c123abc456.us-east-1.rds.amazonaws.com \
      --port 3306 \
      --ssl-ca=/path/to/rds-ca-bundle.pem \
      -u iamuser \
      --password="$TOKEN"

5. 監査ログ・CloudWatch Logs

DB アクティビティをログ記録・分析。

エンジン ログタイプ 保持期間
MySQL Error Log, General Log, Slow Query Log 1 日〜7 日(CloudWatch Logs に export)
PostgreSQL PostgreSQL Logs 1 日〜7 日
Oracle Audit Trail 24 時間

モニタリング

初心者向めメモ: RDS のモニタリングは 3 段階です:CloudWatch(基本メトリクス)Enhanced Monitoring(OS レベル)Performance Insights(クエリ分析)

1. CloudWatch メトリクス(基本)

AWS コンソール・AWS CLI で即座に確認可能。

メトリクス 閾値 アラート条件
CPU Utilization > 80% CPU 高負荷を検出
Database Connections > 接続上限の 80% 接続数逼迫を検出
Disk Space Free < 10 GB ディスク満杯 1 時間前に警告
Read Latency > 10ms I/O 遅延を検出
Write Latency > 5ms I/O 遅延を検出
Network Transmit Throughput > 100 Mbps ネットワーク飽和を検出

2. Enhanced Monitoring(1 秒間隔の OS メトリクス)

CPU steal、ファイルシステム、プロセス単位の監視。

有効化:Parameter Group で enable_cloudwatch_logs_exports = 1
        → CloudWatch Logs に 1 秒間隔で出力
メトリクス 用途
CPU Steal ハイパーバイザーが CPU を奪っていないか確認(> 10% なら容量不足)
I/O Wait ディスク I/O 待機時間(> 50% なら ストレージボトルネック)
Process Memory プロセス単位のメモリ使用量
Disk I/O 読み書き操作数・レイテンシ

3. Performance Insights(クエリ分析)

「どのクエリが遅いのか」をビジュアル化。

RDS インスタンス
    ↓(秒単位の db load 分析)
Performance Insights ダッシュボード
    ↓
Top SQL・Wait Events を特定
    ↓
クエリ実行計画を最適化

主要な分析軸:

活用
Top SQL 負荷が高いクエリを特定して最適化
Wait Events CPUiolock などボトルネック把握
Host / User クライアント・ユーザー別の負荷分析
Dimensions DB・テーブル単位での負荷分析

メンテナンスとアップグレード

初心者向めメモ: DB アップグレードは ダウンタイムが発生する大イベントです。Blue/Green Deployment で「テスト→本番切替」を自動化します。

メンテナンスウィンドウ

毎週メンテナンス時刻(AWS 指定)に以下を実施:
- OS パッチ適用
- DB エンジンマイナー更新
- インフラ メンテナンス

Single-AZ      → ダウンタイム発生(通常 5 分)
Multi-AZ       → フェイルオーバー(通常ユーザーに影響なし)

マイナー更新(自動)

MySQL 8.0.1 → 8.0.2(小数点以下)。互換性維持。

  • AWS が自動管理
  • → メンテナンスウィンドウ内に実行
  • → フェイルオーバーで対応(Multi-AZ)

メジャー更新(手動)

MySQL 5.7 → 8.0(互換性破壊の可能性あり)。

【図3】Blue/Green Deployment フロー:

graph TD
    A["Blue 環境<br/>MySQL 5.7(本番)"] -->|1. Clone| B["Green 環境<br/>MySQL 8.0(テスト)"]
    B -->|2. テスト実行<br/>互換性確認| C["テスト合格"]
    C -->|3. リッドインスタンス<br/>DNS 切替| D["Green 環境<br/>MySQL 8.0(新本番)"]
    E["Blue 環境<br/>MySQL 5.7"] -->|削除| F["ロールバック可能"]
    
    style A fill:#64B5F6,stroke:#1976D2,color:#fff
    style B fill:#FFA726,stroke:#F57C00,color:#fff
    style D fill:#81C784,stroke:#388E3C,color:#fff

メリット:

  • ✅ ダウンタイム 0 秒(DNS 切替時のみ秒単位で影響)
  • ✅ ロールバック可能(Blue 環境が本番として残存)
  • ✅ テスト環境で十分なテストが可能

他の類似ツールとの比較

初心者向めメモ: RDS は「AWS 内での選択肢」ですが、マルチクラウド・オンプレを検討するならば、競合製品も比較対象です。

製品 特徴 対応エンジン 最適シーン コスト
RDS AWS マネージド MySQL, PostgreSQL, MariaDB, Oracle, SQL Server AWS メイン企業
Aurora 超高性能・高可用性 MySQL, PostgreSQL 互換 高スケーラビリティ必須
Azure DB for MySQL/PostgreSQL Azure マネージド MySQL, PostgreSQL Azure メイン企業
GCP Cloud SQL GCP マネージド MySQL, PostgreSQL, SQL Server GCP 統合
PlanetScale MySQL 互換・Serverless MySQL(Vitess) ハイスケール・SaaS 従量課金
Neon PostgreSQL 互換・Serverless PostgreSQL 開発・スタートアップ 無料〜
Supabase PostgreSQL + 拡張機能 PostgreSQL バックエンド+認証一体 無料〜
CockroachDB Cloud 分散 SQL・マルチリージョン SQL(PostgreSQL 互換) グローバル分散
Vitess(オープンソース) MySQL シェーディング MySQL 超大規模スケーリング 無料(セルフホスト)
セルフホスト(EC2) 制限なし すべて 完全カスタマイズ必要 安い(管理工数高)

クライアントとエコシステム

初心者向めメモ: RDS の接続・管理・分析ツール一覧です。

カテゴリ ツール 特徴
GUI クライアント DBeaver(無料・有料) 最も広く使われた SQL IDE
DataGrip(有料) JetBrains 製・高機能
MySQL Workbench MySQL 公式
pgAdmin PostgreSQL 公式
監視・分析 Performance Insights AWS 統合・クエリ分析
CloudWatch AWS 基本メトリクス
Datadog RDS Monitoring 統合監視プラットフォーム
マイグレーション AWS DMS AWS 公式・オンプレ→AWS
Flyway DB バージョン管理・IaC
Liquibase DB スキーマ管理
ORM / クエリビルダ Sequelize(Node.js) ORM ライブラリ
SQLAlchemy(Python) ORM ライブラリ
GORM(Go) Go ORM
Prisma(Node.js) 次世代 ORM
コネクション管理 RDS Proxy AWS 公式・接続プール
PgBouncer PostgreSQL 用・軽量
ProxySQL MySQL 用・高性能

ベストプラクティス

性能最適化

1. インスタンスクラス選択
   → db.t3(開発)→ db.m6i(本番)→ db.r6i(分析)

2. ストレージ選定
   → gp3(推奨)、io1(超高 IOPS)

3. パラメータグループ最適化
   → max_connections(接続数制限)
   → innodb_buffer_pool_size(メモリ使用)

4. インデックス設計
   → EXPLAIN ANALYZE でクエリプラン確認
   → 冗長インデックス削除

5. 接続数管理
   → RDS Proxy で short-lived connection 集約

コスト最適化

1. Reserved Instance
   → オンデマンド比 40-60% 削減(1 年/3 年)

2. 開発環境の停止
   → 夜間・休日に DB インスタンス停止(ストレージ課金のみ)

3. ストレージ分類
   → gp2 → gp3 移行で 20% 削減

4. リードレプリカ の慎重な利用
   → 不要なリードレプリカ削除で複製コスト削減

5. Graviton2 プロセッサ活用
   → db.t4g / db.r6g で 30% コスト削減

可用性確保

1. 本番は必ず Multi-AZ
   → Single-AZ は開発のみ

2. PITR 保持期間設定
   → デフォルト 7 日(金融は 35 日推奨)

3. クロスリージョン バックアップ
   → リージョン障害への備え

4. フェイルオーバーテスト定期実施
   → 昇格時間の実測

5. Read Replica の活用
   → 読み負荷分散で耐性向上

セキュリティ強化

1. ネットワーク分離
   → プライベートサブネット配置
   → Bastion EC2 経由でのアクセス

2. 暗号化有効化
   → 保存時:KMS 暗号化
   → 転送時:SSL/TLS 必須

3. IAM 認証
   → パスワード管理削減(MySQL/PostgreSQL)
   → Secrets Manager でシークレット自動ローテーション

4. 監査ログ
   → CloudWatch Logs に export
   → SIEM 分析

5. パッチ管理
   → 定期メンテナンスウィンドウ設定
   → Blue/Green Deployment でテスト

トラブルシューティング

問題:「DB インスタンス接続不可」

原因・対応:

1. Security Group 確認
   → EC2 の SG を RDS SG inbound に許可
   
2. ネットワーク到達性確認
   aws rds describe-db-instances --query \
   'DBInstances[0].Endpoint'

3. 認証情報確認
   → ユーザー名・パスワード・エンドポイント再確認

4. RDS インスタンス状態確認
   aws rds describe-db-instances \
   --query 'DBInstances[0].DBInstanceStatus'
   → 'available' 以外なら作成中・メンテ中

問題:「CPU 高負荷が続く」

分析フロー:

1. CloudWatch で CPU 推移確認
   → 常時 > 80% → インスタンスサイズアップ検討
   
2. Performance Insights で Top SQL 特定
   → Full Table Scan? → インデックス追加
   
3. 接続数確認
   → 接続数が上限 → RDS Proxy 導入 or インスタンスサイズアップ

問題:「ディスク満杯」

1. ディスク使用量確認
   aws cloudwatch get-metric-statistics \
   --metric-name FreeStorageSpace

2. 対応
   → 自動スケーリング有効化
   → 大量データ削除 + VACUUM
   → ストレージサイズ手動拡張

問題:「リードレプリカ ラグが増加」

1. ラグ監視
   aws cloudwatch get-metric-statistics \
   --metric-name ReplicationLag

2. 原因特定
   → リードレプリカの CPU 高? → インスタンスサイズアップ
   → ネットワーク遅延? → リージョン内複製推奨
   → 重いトランザクション? → 最適化

3. 対応
   → リードレプリカの CPU・メモリ増強
   → 読み取り負荷を他リードレプリカに分散

2025-2026 最新動向

1. Blue/Green Deployment の高速化(2026 年 1-4 月)

ダウンタイムを 5 秒以下に短縮。RDS Proxy 統合で即座復旧。

  • 従来:30-60 秒のダウンタイム
  • 2026年1月:5秒以下(単一リージョン)
  • 2026年4月:RDS Proxy 対応 → インスタンス自動リダイレクト

PostgreSQL・MySQL・MariaDB・Aurora 対応。5 秒以下の大幅短縮により、本番環境のメジャーアップグレードが現実的に。

2. PostgreSQL 17・MySQL 8.4 LTS 対応

PostgreSQL 17 機能強化:JSON テーブル関数、並列クエリ 35% 高速化、真空メモリ管理改善。

RDS では 2026 年 2 月より PostgreSQL 18.3、17.9、16.13、15.17、14.22 対応。MySQL 8.4 は 2025 年 LTS、レプリケーション・JSON ハンドリング強化。

3. Aurora DSQL(分散 SQL)

マルチリージョン同期、超低レイテンシを提供する新世代 DB。

  • RDS PostgreSQL Aurora DSQL
  • 単一リージョン マルチリージョン
  • フェイルオーバー リアルタイム同期
  • 1-2 分 < 100ms レイテンシ

4. Multi-AZ Cluster 改善

2 つの読み取り Standby 構成で、書き込みレイテンシ 2 倍改善。マイナーバージョンアップグレード時間 35 秒以下。

5. Graviton4 プロセッサ対応

CPU 性能 30% 向上、コスト 40% 削減。

6. Amazon Bedrock との統合

生成 AI による異常検知・クエリ最適化提案。

Performance Insights
    ↓(AI 分析)
異常検知・改善提案
    ↓
自動最適化実行

7. Optimized Reads / Writes

読み書きパフォーマンスの自動最適化。


学習リソース

公式ドキュメント

学習コース

  • AWS Skill Builder RDS トレーニング
  • Udemy「AWS RDS 完全マスター」
  • Linux Academy・A Cloud Guru の RDS コース

ハンズオン

# 1. RDS インスタンス作成(CloudFormation)
aws cloudformation create-stack \
  --stack-name my-rds \
  --template-body file://rds-template.yaml

# 2. DBeaver で接続・SQL 実行
# 3. Performance Insights でモニタリング
# 4. Blue/Green Deployment でアップグレード

実装例・活用シーン

シーン 1:ECS + RDS PostgreSQL の標準構成

version: '3'
services:
  web:
    image: myapp:latest
    environment:
      DB_HOST: mydb.c123abc456.us-east-1.rds.amazonaws.com
      DB_PORT: 5432
      DB_NAME: myappdb
      DB_USER: appuser
    depends_on:
      - db
  
  db:
    # RDS PostgreSQL に置き換え
    # AWS Systems Manager Secrets Manager でシークレット管理

シーン 2:Lambda + RDS Proxy + IAM 認証

import boto3
import pymysql
from pymysql import cursors

def lambda_handler(event, context):
    rds_client = boto3.client('rds')
    
    # IAM トークン生成
    token = rds_client.generate_db_auth_token(
        DBHostname='mydb-proxy.proxy-c123abc456.us-east-1.rds.amazonaws.com',
        Port=3306,
        DBUser='iamuser'
    )
    
    # RDS Proxy 経由で接続
    connection = pymysql.connect(
        host='mydb-proxy.proxy-c123abc456.us-east-1.rds.amazonaws.com',
        port=3306,
        user='iamuser',
        password=token,
        database='mydb',
        ssl={'ssl': True}
    )
    
    with connection.cursor(cursors.DictCursor) as cursor:
        cursor.execute("SELECT * FROM users LIMIT 10")
        return cursor.fetchall()

シーン 3:バックアップ・PITR 復旧スクリプト

#!/bin/bash

# スナップショット作成
aws rds create-db-snapshot \
  --db-instance-identifier mydb \
  --db-snapshot-identifier mydb-backup-$(date +%Y%m%d-%H%M%S)

# PITR で復旧(誤削除から 10 分前)
RESTORE_TIME=$(date -u -d '10 minutes ago' +%Y-%m-%dT%H:%M:%SZ)

aws rds restore-db-instance-to-point-in-time \
  --source-db-instance-identifier mydb \
  --target-db-instance-identifier mydb-restored \
  --restore-time "$RESTORE_TIME"

導入ロードマップ

【Phase 1】計画・設計(1-2 週間)
├─ エンジン・インスタンスサイズ選定
├─ 高可用性要件(Single-AZ vs Multi-AZ)
├─ セキュリティ・ネットワーク設計
└─ コスト見積

【Phase 2】構築・テスト(2-4 週間)
├─ RDS インスタンス作成(CloudFormation / Terraform)
├─ バックアップ・PITR 設定
├─ Performance Insights・監視設定
├─ アプリケーション接続テスト
└─ 障害シミュレーション(フェイルオーバーテスト)

【Phase 3】移行(1-2 週間)
├─ AWS DMS でデータ複製(並行運用テスト)
├─ DNS 切替
├─ 本番運用確認
└─ レガシー DB の停止

【Phase 4】運用(継続)
├─ 日次バックアップ確認
├─ Performance Insights で定期チューニング
├─ セキュリティパッチ・メンテナンスウィンドウ管理
└─ コスト最適化レビュー(四半期ごと)

実装チェックリスト

セキュリティ

  • [ ] RDS をプライベートサブネットに配置
  • [ ] Security Group でインバウンド制限(必要なポートのみ)
  • [ ] 暗号化有効化(KMS)
  • [ ] SSL/TLS 必須設定(Parameter Group)
  • [ ] IAM 認証有効化(MySQL/PostgreSQL)
  • [ ] Secrets Manager でシークレット管理
  • [ ] CloudWatch Logs へのログ export
  • [ ] 監査ログの定期確認

可用性

  • [ ] 本番は Multi-AZ デプロイメント
  • [ ] PITR 保持期間を適切に設定(最小 7 日)
  • [ ] クロスリージョンバックアップ有効化
  • [ ] リードレプリカの配置(読み負荷分散用)
  • [ ] フェイルオーバーテスト月 1 回実施
  • [ ] RTO / RPO 要件の文書化

パフォーマンス

  • [ ] インスタンスサイズの適正化(Performance Insights で確認)
  • [ ] インデックス戦略の実装
  • [ ] ストレージ自動スケーリング有効化
  • [ ] RDS Proxy の導入(Lambda/ECS 利用時)
  • [ ] Enhanced Monitoring 有効化

コスト

  • [ ] Reserved Instance 購入検討(本番)
  • [ ] 開発環境の夜間停止スケジュール
  • [ ] ストレージ使用量監視
  • [ ] 不要リードレプリカの削除定期確認
  • [ ] Graviton2 インスタンスの活用

運用

  • [ ] メンテナンスウィンドウの設定
  • [ ] バージョンアップグレード計画(Blue/Green)
  • [ ] 定期的なパラメータ見直し
  • [ ] エスカレーション手順の文書化

まとめ

Amazon RDS は 「データベース運用の自動化」 を実現する AWS の主力マネージドサービスです。OS・パッチ・バックアップ・フェイルオーバーを AWS が一元管理し、開発者は ビジネスロジックの実装に集中 できます。

選択基準

  • Oracle / SQL Server が必須 → RDS 標準版 or RDS Custom
  • MySQL / PostgreSQL で標準可用性 → RDS(最も推奨)
  • 超高可用性・読み取りスケール → Aurora
  • OS 直接アクセス必須 → RDS Custom

成功のコツ

  • 早期に Multi-AZ を有効化 → 本番環境は SLA 99.95% で十分
  • Performance Insights で継続的チューニング → インスタンスサイズの無駄削減
  • Blue/Green Deployment でノーダウンアップグレード → メンテナンス影響を最小化
  • RDS Proxy 導入 → Lambda・ECS との相性が劇的に改善

参考文献

  1. AWS RDS 公式ドキュメント
  2. Amazon RDS ベストプラクティス
  3. RDS Performance Insights ガイド
  4. Blue/Green Deployments for Amazon RDS
    • 2026 年 1 月:5 秒以下ダウンタイム達成
    • 2026 年 4 月:RDS Proxy 統合対応
  5. RDS Proxy ドキュメント
  6. Overview of Amazon RDS Blue/Green Deployments
  7. Amazon RDS Multi-AZ Deployments
  8. PostgreSQL Release Notes
    • PostgreSQL 17 & 18 最新仕様・並列クエリ最適化
  9. PostgreSQL 17 Official Documentation
  10. MySQL 8.4 LTS Reference Manual
  11. AWS Well-Architected Framework - Database
  12. Oracle Database Documentation
  13. AWS Skill Builder「Amazon RDS for Database Administrators」
  14. AWS Database Blog
    • RDS・Aurora・DMS 最新情報
  15. DBeaver 公式ドキュメント
  16. AWS DMS(Database Migration Service)ガイド

最終更新:2026-04-26