【AWS】Amazon RDSとは?仕組み・Multi-AZ・Read Replicaを初心者向けに解説

  • URLをコピーしました!

前の記事では、 Amazon S3の基本を学びました。

Amazon S3を利用すると、 画像・ログ・バックアップなどのデータを オブジェクトとして保存できます。

では、Webサービスのユーザー情報や商品情報など、 検索・追加・更新を行うデータは どこへ保存すればよいのでしょうか。

COMPUTE Amazon EC2 サーバー
STORAGE Amazon S3 オブジェクト
DATABASE Amazon RDS データベース
QUESTION AWSでリレーショナルデータベースを
利用するにはどうすればいい?

そこで登場するAWSの代表的な データベースサービスが、 Amazon RDSです。

☁ AWS INTERMEDIATE

この記事はAWS中級講座のレッスン10です。 AWSでリレーショナルデータベースを利用するための Amazon RDSの基本を学びます。

AWS中級講座を見る →
LESSON GOAL この記事のゴール

Amazon RDSの基本的な仕組みを理解し、 DBインスタンス・DBエンジン・Multi-AZ・ Read Replica・バックアップ などの基本用語を説明できるようになることを目指します。

目次

Amazon RDSとは?

Amazon RDS(Relational Database Service)は、 AWSが提供する マネージド型のリレーショナルデータベースサービス です。

通常、データベースを利用するためには、 サーバーを用意してデータベースソフトウェアを インストールする必要があります。

従来のデータベース構築
01 サーバー準備
02 OS構築
03 DB導入
04 運用

Amazon RDSを利用すると、 こうしたデータベース基盤の管理作業の多くを AWSに任せることができます。

POINT Amazon RDS = リレーショナルデータベースを 簡単に構築・運用できるマネージドサービス

リレーショナルデータベースとは?

リレーショナルデータベースでは、 データをテーブルと呼ばれる 表形式で管理します。

USERS TABLE
ID
NAME
EMAIL
001
Tanaka
tanaka@example.com
002
Sato
sato@example.com
003
Suzuki
suzuki@example.com

たとえばWebサービスでは、 ユーザー情報・商品情報・注文情報などを テーブルとして管理できます。

MEMORY RDSは「構造化されたデータ」を 管理するデータベースとして利用される

RDSで利用できるDBエンジン

Amazon RDSでは、 複数のデータベースエンジンを 選択できます。

MYSQL MySQL
POSTGRESQL PostgreSQL
MARIADB MariaDB
ORACLE Oracle
SQL SERVER SQL Server
AWS Amazon Aurora

このようにRDSは、 「1種類のデータベースそのもの」ではありません。

RDSというサービス上で、 用途に応じたDBエンジンを選択して利用する というイメージです。

POINT RDSを作成するときは 利用するDBエンジンを選択する

DBインスタンスとは?

RDSでデータベースを作成するときに登場するのが DBインスタンスです。

DBインスタンスは、 RDS上でデータベースエンジンを動かすための コンピューティング環境と考えると イメージしやすいでしょう。

DB INSTANCE
COMPUTE CPU / Memory
DATABASE ENGINE MySQL
STORAGE Database Data

作成時には、 必要なCPUやメモリに応じて DBインスタンスクラスを選択します。

MEMORY DBインスタンス = RDSでデータベースを動かす環境

EC2にデータベースを構築する場合との違い

データベースは、 EC2インスタンスへMySQLなどをインストールして 構築することもできます。

では、EC2とRDSでは 何が違うのでしょうか。

SELF MANAGED EC2 + Database
Database Operating System EC2

OSやDBソフトウェアなどを 自分で管理する

VS
MANAGED SERVICE Amazon RDS
Database AWS Managed Infrastructure

多くの管理作業を AWSに任せられる

IMPORTANT

RDSを利用しても、 データベース内のデータやユーザー、 アプリケーションからの利用方法まで AWSがすべて管理してくれるわけではありません。 どこまでAWSが管理し、どこから利用者が管理するか を意識することが重要です。

RDSはVPCの中に配置する

RDSを理解するときは、 これまで学んできた VPCやサブネットとの関係も重要です。

一般的なWebシステムでは、 RDSをインターネットへ直接公開するのではなく、 プライベートなサブネット側へ配置 する構成がよく利用されます。

VPC
PUBLIC SUBNET Web Server Amazon EC2
PRIVATE SUBNET Database Amazon RDS

WebサーバーからRDSへ必要な通信だけを許可し、 データベースをインターネットから直接アクセスできない 構成にすることで、 セキュリティを高められます。

DESIGN Webサーバー → RDS の必要な通信だけを許可する

DBサブネットグループとは?

RDSでは、 DBインスタンスを配置するサブネットを指定するために DBサブネットグループを利用します。

DB SUBNET GROUP
AZ-A Private Subnet A
AZ-B Private Subnet B

DBサブネットグループには、 通常、複数のAZに存在するサブネットを登録します。

これによって、 後ほど学ぶMulti-AZ構成などで 複数AZを利用できるようになります。

Multi-AZとは?

RDSの重要な機能の1つが、 Multi-AZです。

Multi-AZを利用すると、 複数のアベイラビリティゾーンを利用して データベースの可用性を高められます。

MULTI-AZ DEPLOYMENT
AZ-A Primary DB 読み書き
同期レプリケーション
AZ-B Standby DB 待機系

通常時はPrimary DBを利用します。

Primary側で障害が発生した場合は、 Standby側へ フェイルオーバーすることで、 データベースを継続して利用できるようにします。

BEFORE Primary DB 障害発生
→ FAILOVER →
AFTER Standby DB 新しいPrimaryへ
MULTI-AZ Multi-AZの主な目的 = データベースの可用性を高める

Read Replicaとは?

RDSには、 Read Replica(リードレプリカ) という仕組みもあります。

Read Replicaは、 読み取り処理を分散するための 読み取り用レプリカです。

PRIMARY RDS 書き込み / 読み取り
レプリケーション
READ REPLICA RDS 読み取り

たとえば、 大量の検索処理が発生するシステムでは、 読み取り処理をRead Replicaへ分散することで Primary DBの負荷を軽減できます。

Multi-AZとRead Replicaの違い

この2つは非常に混同しやすいため、 目的の違いを整理しておきましょう。

HIGH AVAILABILITY Multi-AZ
可用性

障害発生時の フェイルオーバーに備える

READ SCALING Read Replica
読み取り性能

読み取り処理を分散して DB負荷を軽減する

VERY IMPORTANT Multi-AZ → 可用性を高める
Read Replica → 読み取り処理を分散する

RDSのバックアップ

データベースでは、 障害や操作ミスに備えて バックアップを取得することが重要です。

RDSには、 データベースを保護するための バックアップ機能があります。

AUTOMATIC 自動バックアップ

設定した保持期間に基づいて バックアップを管理

MANUAL DBスナップショット

必要なタイミングで 手動スナップショットを作成

自動バックアップでは、 指定した保持期間内で ポイントインタイムリカバリを利用して、 特定の時点へ復元できます。

10:00 DB
12:00 DB
14:00 操作ミス
RESTORE 復元

RDSへのアクセスはSecurity Groupで制御する

RDSへ誰でもアクセスできてしまうと、 重要なデータが外部から狙われる危険があります。

そのため、 RDSへの通信は Security Groupを利用して 制御することが重要です。

WEB SERVER EC2 Security Group A
MySQL : TCP 3306 →
DATABASE RDS Security Group B

たとえばMySQLを利用している場合、 RDS側のSecurity Groupで WebサーバーのSecurity Groupからの TCP 3306番ポートだけを許可する といった設定ができます。

SECURITY

「インターネット全体からDBポートを許可する」のではなく、 データベースへアクセスする必要がある サーバーだけを許可する という考え方が重要です。

EC2・S3・RDSを組み合わせる

ここまで学んだAWSサービスを組み合わせると、 基本的なWebシステムの構成が見えてきます。

COMPUTE Amazon EC2 Webアプリケーション
DATABASE Amazon RDS ユーザー・商品情報

このように、 AWSでは各サービスに役割を分けて システムを構築できます。

EC2 処理する
S3 ファイルを保存する
RDS DBデータを管理する

あなたならどのRDS構成を選ぶ?

ここまで学んだ内容を使って、 RDSの構成を選択してみましょう。

REQUIREMENT Webサービスのデータベースを構築します。
DBサーバーに障害が発生しても、 できるだけサービスを継続できるようにしたい。

どちらの構成が適しているでしょうか。

どちらか選択してください

今回求められているのは「可用性」です。

確認問題:Amazon RDS

QUESTION 01

Amazon RDSの説明として 正しいものはどれですか?

正解:B

Amazon RDSは、 AWSが提供するマネージド型の リレーショナルデータベースサービスです。

QUESTION 02

RDS Multi-AZの主な目的は どれですか?

正解:A

Multi-AZでは複数AZを利用し、 障害発生時のフェイルオーバーによって データベースの可用性を高めます。

QUESTION 03

データベースの読み取り処理を 分散したい場合に利用するものはどれですか?

正解:C

Read Replicaを利用すると、 読み取り処理をレプリカへ分散し、 Primary DBの読み取り負荷を軽減できます。

YOUR SCORE 0 / 3

3問に挑戦してみましょう。

まとめ

01

Amazon RDSは マネージド型のリレーショナルデータベースサービス

02

MySQL・PostgreSQL・Oracle・SQL Server・ AuroraなどのDBエンジンを選択できる

03

DBサブネットグループによって RDSを配置するサブネットを指定する

04

Multi-AZは データベースの可用性を高めるために利用する

05

Read Replicaは 読み取り処理の分散に利用する

06

自動バックアップや DBスナップショットによって データを保護できる

07

Security Groupを利用して RDSへの通信を必要な範囲だけ許可する

次は複数のサーバーへ通信を分散する「ELB」へ

ここまで、 EC2・S3・RDSという AWSの代表的なサービスを学んできました。

しかし、Webサービスへのアクセスが増えてくると、 1台のEC2インスタンスだけでは 処理しきれなくなる可能性があります。

ACCESS
USER USER USER USER
↓ ↓ ↓ ↓
ONE SERVER Amazon EC2 アクセス集中

そこで利用されるのが、 複数のサーバーへ通信を振り分ける ELB(Elastic Load Balancing)です。

NEXT CONCEPT Elastic Load Balancing

次の記事では、 ELBを使って複数のEC2インスタンスへ 通信を分散する仕組みを学びます。

NEXT LESSON AWS INTERMEDIATE 11

ELBで負荷分散する仕組みを理解する

EC2・S3・RDSの役割を理解したら、 次はアクセスを複数のサーバーへ 分散する仕組みを学びましょう。

次の記事では、 ELB・ロードバランサー・ターゲット・ ヘルスチェック・ALB/NLB などの基本を整理します。

ELBで負荷分散する仕組みを理解する
AWS INTERMEDIATE

AWS中級講座へ戻る

AWS中級講座の記事一覧から、 学習したいレッスンを確認できます。

← AWS中級講座へ戻る
目次