データベースサービス(RDS)
ストーリー
「中村製作所さんのシステムの心臓部はデータベースだ。 受注管理、在庫管理、顧客情報......全て MySQL のデータベースに入っている」
山田先輩が続ける。
「オンプレミスのDBサーバーを自前で運用するのは大変だ。 パッチ適用、バックアップ、レプリケーション、障害対応...... 夜中に障害が起きたら駆けつけなきゃいけない」
「それを AWS に任せられるということですか?」
「そうだ。RDS を使えば、データベースのインフラ管理を AWS に任せて、 自分たちはアプリケーション開発に集中できる。 自動バックアップ、マルチAZによる冗長化、自動パッチ適用...... オンプレでは何日もかかる作業が、設定一つで実現できる」
RDS とは
RDS(Relational Database Service)は、AWS が提供するマネージドリレーショナルデータベースサービスです。データベースエンジンのインストール、パッチ適用、バックアップ、レプリケーションなどを AWS が管理します。
RDS がやってくれること
自前運用 vs RDS
┌──────────────────┐ ┌──────────────────┐
│ 自前運用(EC2上) │ │ RDS (マネージド) │
│ │ │ │
│ [x] サーバー調達 │ │ [自動] パッチ適用 │
│ [x] OS設定 │ → │ [自動] バックアップ │
│ [x] DB インストール │ │ [自動] 障害検知 │
│ [x] パッチ適用 │ │ [自動] フェイルオーバー│
│ [x] バックアップ │ │ [自動] スケーリング │
│ [x] 監視設定 │ │ [設定] 暗号化 │
│ [x] 障害対応 │ │ │
│ [x] スケーリング │ │ ユーザーが管理: │
│ │ │ ・スキーマ設計 │
│ 全て自分で管理 │ │ ・クエリ最適化 │
│ │ │ ・アプリケーション │
└──────────────────┘ └──────────────────┘
サポートされるデータベースエンジン
| エンジン | 特徴 | 用途 |
|---|---|---|
| MySQL | 最も広く使われるOSS DB | 一般的なWebアプリケーション |
| PostgreSQL | 高機能OSS DB、JSON対応 | 複雑なクエリ、GIS |
| MariaDB | MySQL互換のOSS DB | MySQL代替 |
| Oracle | エンタープライズDB | 大規模基幹システム |
| SQL Server | Microsoft製DB | Windows/.NET環境 |
| Amazon Aurora | AWS独自の高性能DB | MySQL/PostgreSQL互換で高性能 |
Amazon Aurora の特徴
Aurora は AWS が独自開発した高性能データベースで、MySQL の最大5倍、PostgreSQL の最大3倍の性能を持ちます。
Aurora のストレージアーキテクチャ
┌──────── Aurora クラスター ────────┐
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ Primary │ │ Replica │ │
│ │ (書き込み) │ │ (読み取り)│ │
│ └─────┬────┘ └─────┬────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────────────────┐ │
│ │ 共有ストレージ(6コピー) │ │
│ │ ┌──┐ ┌──┐ ┌──┐ │ │
│ │ │AZ│ │AZ│ │AZ│ 3つのAZに │ │
│ │ │ a│ │ c│ │ d│ 各2コピー │ │
│ │ └──┘ └──┘ └──┘ │ │
│ │ 自動で最大128TBまで拡張 │ │
│ └─────────────────────────────┘ │
└──────────────────────────────────┘
RDS のインスタンスクラス
| クラス | 用途 | 例 |
|---|---|---|
| db.t3 / db.t4g | 開発・テスト、小規模 | db.t3.micro, db.t3.small |
| db.m5 / db.m6i | 汎用的な本番ワークロード | db.m5.large, db.m6i.xlarge |
| db.r5 / db.r6i | メモリ集約型ワークロード | db.r5.large, db.r6i.2xlarge |
マルチAZ 配置
本番環境では、マルチAZ配置で高可用性を確保します。
通常時:
┌─── AZ-a ────┐ ┌─── AZ-c ────┐
│ ┌─────────┐ │ │ ┌───────── ┐ │
│ │ Primary │ │────→│ │ Standby │ │
│ │ (読み書き)│ │同期 │ │ (待機) │ │
│ └─────────┘ │レプリ│ └─────────┘ │
└──────────────┘ケーション└──────────────┘
障害発生時(自動フェイルオーバー):
┌─── AZ-a ────┐ ┌─── AZ-c ────┐
│ ┌─────────┐ │ │ ┌─────────┐ │
│ │ 障害! │ │ │ │ Primary │ │
│ │ ××××× │ │ │ │ に昇格 │ │
│ └─────────┘ │ │ └─────────┘ │
└──────────────┘ └──────────────┘
フェイルオーバー: 約60秒
自動バックアップとスナップショット
自動バックアップ
bash
# バックアップ保持期間の設定(最大35日)
aws rds modify-db-instance \
--db-instance-identifier my-database \
--backup-retention-period 7- 毎日自動でバックアップを取得
- ポイントインタイムリカバリ(任意の秒まで復元可能)
- バックアップウィンドウで取得時間を指定
手動スナップショット
bash
# 手動スナップショットの作成
aws rds create-db-snapshot \
--db-instance-identifier my-database \
--db-snapshot-identifier my-snapshot-2024-01
# スナップショットからの復元(新しいインスタンスとして)
aws rds restore-db-instance-from-db-snapshot \
--db-instance-identifier my-restored-db \
--db-snapshot-identifier my-snapshot-2024-01RDS の接続方法
bash
# RDS のエンドポイントを確認
aws rds describe-db-instances \
--db-instance-identifier my-database \
--query 'DBInstances[0].Endpoint'
# 出力例:
# {
# "Address": "my-database.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com",
# "Port": 3306
# }
# MySQL クライアントから接続
mysql -h my-database.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com \
-P 3306 \
-u admin \
-pRDS は直接インターネットからアクセスするのではなく、VPC 内の EC2 からアクセスするのが基本です。
RDS と EC2 上の DB の比較
| 項目 | EC2 上に DB 構築 | RDS |
|---|---|---|
| パッチ適用 | 手動 | 自動 |
| バックアップ | 手動設定 | 自動 |
| マルチAZ | 手動で構築 | チェックボックス一つ |
| フェイルオーバー | 自前で実装 | 自動(約60秒) |
| 料金 | EC2 料金のみ | RDS 料金(やや高い) |
| 柔軟性 | 自由にカスタマイズ | 一部制限あり |
まとめ
| ポイント | 内容 |
|---|---|
| RDS とは | マネージド RDB サービス。インフラ管理を AWS に委任 |
| 対応エンジン | MySQL, PostgreSQL, Aurora, Oracle, SQL Server, MariaDB |
| マルチAZ | プライマリ + スタンバイで高可用性。自動フェイルオーバー |
| バックアップ | 自動バックアップ + 手動スナップショット |
| Aurora | AWS 独自の高性能 DB。MySQL/PostgreSQL 互換 |
チェックリスト
- RDS のマネージドサービスとしてのメリットを説明できる
- サポートされる DB エンジンの種類を把握した
- マルチAZ 配置の仕組みを理解した
- 自動バックアップとスナップショットの違いを理解した
- Aurora の特徴を説明できる
次のステップへ
Step 1 の基礎知識を学び終えました。次のセクションでは、これまでの内容の理解度を確認するクイズに挑戦します。
推定読了時間: 30 分