LESSON 30分

データベースサービス(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
MariaDBMySQL互換のOSS DBMySQL代替
OracleエンタープライズDB大規模基幹システム
SQL ServerMicrosoft製DBWindows/.NET環境
Amazon AuroraAWS独自の高性能DBMySQL/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-01

RDS の接続方法

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 \
  -p

RDS は直接インターネットからアクセスするのではなく、VPC 内の EC2 からアクセスするのが基本です。


RDS と EC2 上の DB の比較

項目EC2 上に DB 構築RDS
パッチ適用手動自動
バックアップ手動設定自動
マルチAZ手動で構築チェックボックス一つ
フェイルオーバー自前で実装自動(約60秒)
料金EC2 料金のみRDS 料金(やや高い)
柔軟性自由にカスタマイズ一部制限あり

まとめ

ポイント内容
RDS とはマネージド RDB サービス。インフラ管理を AWS に委任
対応エンジンMySQL, PostgreSQL, Aurora, Oracle, SQL Server, MariaDB
マルチAZプライマリ + スタンバイで高可用性。自動フェイルオーバー
バックアップ自動バックアップ + 手動スナップショット
AuroraAWS 独自の高性能 DB。MySQL/PostgreSQL 互換

チェックリスト

  • RDS のマネージドサービスとしてのメリットを説明できる
  • サポートされる DB エンジンの種類を把握した
  • マルチAZ 配置の仕組みを理解した
  • 自動バックアップとスナップショットの違いを理解した
  • Aurora の特徴を説明できる

次のステップへ

Step 1 の基礎知識を学び終えました。次のセクションでは、これまでの内容の理解度を確認するクイズに挑戦します。


推定読了時間: 30分