【AWS】 Amazon RDSでDBサーバーを構築してみよう!
はじめに
記事をご覧いただきありがとうございます。さて、皆さんはAmazon RDS(Amazon Relational Database Service)というものをご存知でしょうか?これはAmazon AWSが提供するサービスの1つで、クラウド上にフルマネージドなリレーショナルデータベース(RDBMS)を構築できるサービスのことです。
このサービスの大きな特徴としてはクラウド上にDBサーバーを構築するためオンプレミスサーバーのような物理的なサーバー構築やOSのインストールなども不要になり、自動バックアップ機能まで搭載しているので構築・運用がかなり楽になります。そのため必要なことは、アプリケーションに対してデータベースを最適化することだけになります。では、これからRDSの機能紹介と実際にRDSでDBサーバーを構築する所まで解説していきます。
※前提条件として「VPC」、「EC2」の作成が必要になります。
RDBMSの概要
リレーショナル型データベースとは
リレーショナル型データベースとは、行(row)と列(column)からなる「表(table)」形式で表されたデータベースのことです。また、リレーションとはテーブル同士の関係を設定・関連付けるもので、2つ以上のテーブルを結合してデータを取り出したり、新しい表を作ったりすることができます。
RDBMSとは
リレーショナル型データベースを構築・制御するためのソフトウェアがRDBMS(Relational Database Management System)で「リレーショナルデータベース管理システム」と呼ばれています。このRDBMSにデータベース言語と呼ばれる、データ定義言語(DDL)・データ操作言語(DML)・データ制御言語(DCL)を使用し様々な指示を伝えることができます。
データ定義言語(DDL): データベースの構造を定義する。
データ操作言語(DML): データベースに対する検索・更新・削除を行う。
データ制御言語(DCL): データに対するアクセス制御を行う。
Amazon RDSの概要
利用可能なDBエンジン
Amazon RDSで利用可能なRDBMSの種類は以下の6つになります。
- MySQL
- PostgreSQL
- Oracle
- Microsoft SQL Server
- Amazon Aurora
- Maria DB
Multi-AZ機能
Amazon RDSは可用性(障害が発生してもサービスが停止しない)が高く、冗長構成をMulti-AZと呼ばれる機能で、簡単に構築することができるようになっています。では、Amazon RDSの特徴であるMulti-AZとは何かについて、これから解説していきます。
AZとは
AWSのデータセンターは地域(リージョン)ごとに分かれており、このリージョン内にある複数の拠点に分かれているデータセンターのことを「アベイラビリティゾーン」と呼び、このAZというのはアベイラビリティゾーンのことを指します。
Multi-AZとは
上記を踏まえてMulti-AZというのは、複数のアベイラビリティゾーンにまたがって、Amazon RDSインスタンスを作成して配置することで、データベースを冗長化するということです。例として、2つのアベイラビリティゾーンがあった場合、1つ目に「マスタのRDS」を配置し、2つ目にマスタのRDSをレプリケーション(コピー)した「スレーブのRDS」を配置する構成にすることです。このようにすることで、マスタのRDSに障害が発生した場合、スレーブのRDSに切り替えてサービスを停止させることなく運用することができます。
リードレプリカ機能
リードレプリカとは、マスタのRDSと同期した複数の読み取り専用のRDSのことです。こうすることでアプリケーション間のDBの読み込みはリードレプリカが担当し、書き込みの方はマスタが担当することでデータベースの負荷を軽減し、パフォーマンスの向上ができるようになります。
自動バックアップ機能
Amazon RDSは1日に1回バックアップを自動で取得する、「スナップショット」という機能と、そのスナップショットを元にDBインスタンスを作成する「リストア」という機能が備わっているので、障害や誤作動が起こった際もリカバリしやすくなっています。
Amazon RDS構築
ここからRDSを設置していくわけですが、手順は以下になります。
- 「プライベートサブネット作成」
- 「RDS作成準備」
- 「RDS作成」
1:プライベートサブネット作成
Multi-AZをできるようにするためには、複数のアベイラビリティゾーンにアベイラビリティゾーンの数に対応したプライベートサブネットが必要なるので、今からそれを作成していきます。
- AWSのマネジメントコンソールのサービスから「VPC」をクリックします。
- 画面左のメニューから「サブネット」を選択し、「サブネットの作成」ボタンをクリックします。
- 名前タグにはサブネット名を入力、VPCは既に作成済みのVPCを選択、アベイラビリティゾーンは別のアベイラビリティゾーンを選択、IPv4は新規アドレスを入力し、「作成」ボタンをクリックするとサブネットが作成されます。
2:RDS作成準備
Amazon RDSの作成に入る前に、各設定を行っていきます。手順は以下の通りです。
- セキュリティグループの作成
- DBサブネットグループ作成
- DBパラメータグループ作成
- DBオプショングループ作成
セキュリティグループの作成
- AWSのマネジメントコンソールのサービスから「EC2」をクリックし、左のメニューに表示されている「セキュリティグループ」をクリックします。
- セキュリティグループの作成ボタンをクリックし、内容を入力していきます。まず、セキュリティグループ名は今回「infra-db」とし、説明欄にも同じ内容を入力、VPCには作成済みのVPCを選択します。また、データベースのタイプは「MYSQL/Aurora」、ソースはカスタムを選択し、EC2作成時に設定したセキュリティグループIDを入力し「作成」ボタンをクリックします。
DBサブネットグループ作成
- マネジメントコンソールのサービスから「RDS」をクリックし、左のメニューから「サブネットグループ」をクリックします。
- DBサブネットグループの作成ボタンをクリックし、各項目を入力していきます。名前と説明には今回、「subnet-group」と入力、VPCは作成済みのVPCを選択します。サブネットの追加の欄には作成した、アベイラビリティゾーンとサブネットを追加し「作成」ボタンをクリックします。
DBパラメータグループ作成
- RDSのページから「パラメータグループ」をクリックし、「パラメータグループの作成」をクリックします。
- パラメータグループファミリー欄は「mysql8.0」を選択し、グループ名と説明欄には今回「mysql8.0」と入力し、「作成」ボタンをクリックします。
DBオプショングループ作成
- RDSのページから「オプショングループ」をクリックし、「グループの作成」ボタンをクリックします。
- 名前と説明欄には今回「mysql8.0」と入力し、エンジンは「mysql」を選択、バージョンは「8.0」を選択し「作成」ボタンをクリックします。
RDS作成
それではいよいよAmazon RDSを作成していきます。手順は以下になります。
- AWSマネジメントコンソールのサービスからRDSをクリックしたら、RDSのページが表示されるので、左のメニューから「データベース」をクリックし、「データベースの作成」ボタンをクリックします。
- エンジンのオプションは「mysql」を選択、バージョンは一番最新のものを選択、テンプレート欄は「開発/テスト」を選択、設定欄のDBインスタンス識別子は今回「infra-web」と入力、認証情報の設定欄はユーザー名を「root」、パスワードは自由に入力してください。
- DBインスタンスサイズはバースト可能クラスを選択し「db.t2.micro」を選択します。また、ストレージの設定と可用性と耐久性の設定はデフォルトのままで大丈夫です。
- 接続の設定は作成したVPCを選択してください。接続の「追加の接続設定」をクリックし、パブリックアクセス可能を「なし」に設定、セキュリティグループは先程作成したものを選択、アベイラビリティゾーンも同じく作成したのもを選択してください。
- 最後に追加の設定をクリックし、DBパラメータグループとOptionGroupに先程作成したのもを適用します、自動バックアップの保持期間を「30日間」に設定し「データベースの作成」ボタンをクリックします。これでAmazon RDSインスタンスが作成されます!
まとめ
Amazon RDSの概要から作成方法まで解説してきましたが、理解できたでしょうか?DBサーバーはWebサーバーと連携させる使い方になるため、前提条件としてAWSの「VPC」や「EC2」の作成やアベイラビリティゾーンやサブネットの理解も必要になるので最初は少し難しいと感じるかもしれませんが、Amazon RDSは手間やコストがほとんど掛からずにすぐにクラウド上にRDSインスタンスを作成できるので非常に優れたサービスです。公開したいサービスなどがあれば、すぐに公開することができるので興味のある方は是非チャレンジしてみてください!