本記事は、以下の目的で作成しています。
- AWSのRDSについて、特徴と使い方が分かる
- RDSでMySQLのデータベースを作成して、EC2と接続する方法が分かる
AWSのRDSとは?特徴とメリット
ここでは、RDSとはなにか?そして、RDSの特徴とメリット、データベースについて解説していきます。
RDSとは?
AWSはAmazon Web Serviceの略でAmazonによって提供されるクラウドコンピューティングを使用したサービスです。RDS(Relational Database Service)は、このAWSが提供しているデータベースサービスの一つです。データベースサーバーとしてRDSを使用することで、データ通信の高速化、障害発生に対する耐久性の確保、容易なサーバー追加による拡張が可能となります。
RDSの特徴とメリット
RDSには、以下のような特徴とメリットがあります。
- 管理性
- 安定したパフォーマンス
- 可用性と耐久性
- スケーラビリティ
- 低コスト
- セキュリティ
それぞれ見ていきましょう。
管理性
ハードウェアのサーバの中でデータベースを作成する場合、サーバーとなるマシンを手配して、設営して、その後に設定をして、といった工程が発生する為、サーバーを構築するまでにある程度の時間を要します。
RDSインスタンスは、AWSのGUIからDBエンジンの選択やパラメータを設定することで簡単に作成できます。また、数分のうちにデータベースインスタンスを作成しアプリケーションを接続することが可能です。インスタンスの容量や設定を変更したい場合でも、同様にAWSのGUIから簡単に更新できます。
安定したパフォーマンス
RDS は、更新用データベース(マスター)からレプリケーションされた参照専用のデータベースを複数用意します。これによって大量の読み込みリクエストが来た場合でもパフォーマンスを落とさずに安定、かつ高速に処理することが出来ます。
可用性と耐久性
RDSは、複数のAZに設置することで、可用性と耐久性を確保することが可能です。AZ(アベイラビリティゾーン)とは、冗長的な電力源、ネットワーク、接続機能を備えるために、AWS リージョン内でそれぞれ切り離されたデータセンターのことです。複数のAZにRDSを配置することで、1つのAZに障害が発生した場合でも他のAZが生きている状態を作リ出すことができます。
スケーラビリティ
RDSでは、ストレージ要件の拡大に合わせて、簡単にストレージの追加・拡張ができます。またストレージを追加する際には、データベースのダウンタイムの発生なしで安心して拡張できます。
低コスト
コストは従量課金制となっています。スペックに応じて、使った分だけ費用を支払う形になるので、イニシャルの費用、ランニング費用を共に抑える事が可能です。また、RDSでは1年間の無料利用枠が存在します。利用できるスペックは限定されていますが、初心者の方は無料でお金の心配をすることなく利用することも可能です。
セキュリティ
RDSでは、VPCやサブネット、セキュリティグループを適切に設定することで高いセキュリティを確保することが出来ます。また、KMSやAWS CloudHSMといった他の暗号化サービスを使うことで、さらにセキュリティを向上させることも可能です。
DBエンジンについて
RDSでは、DB(データベース)エンジンとして複数から選択することが可能です。具体的には以下から選択することが可能です。
- Oracle
- MySQL
- MariaDB
- SQL Server
- PostgreSQL
- Amazon Aurora
本記事では、DBエンジンとしてMySQL 5.7を選択します。
理由としては、MySQLは世界でもっとも利用されているとても一般的なデータベース管理システムであり、初心者の方でも扱いやすいからです。
また、MySQLのDBエンジンはAWSの無料利用枠内で使用することができ、コストを抑えることが出来るからです。
RDSのデータベースサーバーを作成する
RDSのデータベースサーバーを作成していきます。はじめに、AWSにログインして右上のメニューから、「アジアパシフィック(東京)」のリージョンを選択しておいてください。
サブネットグループを作成する
RDSインスタンスを作成するにあたり、サブネットをRDSインスタンスに割り当てるためにはサブネットグループを作成する必要があります。
サブネットとはAWSユーザー専用のプライベートなクラウド環境であるVPC(Virtual Private Cloud)において、IPアドレスをブロックごとに分割したネットワーク群です。
まだ、RDS用のサブネットを作成していない方は、下記の記事を参照して作成してください。
サブネットを作成したら、サブネットグループを作成していきます。
まず、AWSのコンソール画面から「RDS」と検索して、RDSのコンソール画面に移動します。画面左のメニューから「サブネットグループ」を選択し、ルートテーブル一覧画面の右上にある「DBサブネットグループを作成」をクリックするとサブネットグループの作成ページに移動します。
下記図の「サブネットグループの詳細」において、「名前」と「説明」に、「app-rds-subnet-group」と入力し、「VPC」は作成したサブネットを含むVPCを選択します。
「サブネットを追加」に対して、「アベイラビリティゾーン」には複数のアベイラビリティゾーンを選択し、サブネットもそれぞれのアベイラビリティゾーンに対応したRDS用のサブネットを選択します。例として、本記事では下記図のように設定します。
最下にある「作成」をクリックし、サブネットグループを作成します。下記の画像のようにリストアップされれば、サブネットグループの作成は完了です。
データベースを新規作成する
RDSのデータベースを新規作成していきます。RDSのコンソール画面で、「データベースの作成」をクリックすると、データベース作成ページに移動します。「データベースの作成方法」は、標準作成(デフォルト)を選択、「エンジンのオプション」について、エンジンのタイプは「MySQL」、バージョンはMysql 5.7系を選択します。
続けて、「テンプレート」は「無料利用枠」を選択します。「設定」について、任意のデータベース名、データベースユーザー名、パスワードを入力します。下記画像では例として、データベース名とユーザー名を共に「test」としています。
「その他」についてはデフォルト設定のまま、最下の「データベースの作成」をクリックします。下記の画像のように作成したデータベースがリストアップされ、ステータスが「利用可能」なっていることを確認できたら、データベースの作成は完了です。
EC2とRDS上のMySQLのデータベースを接続する
作成したRDSのデータベースサーバーとEC2インスタンスを接続して、EC2上からMySQLコマンドでデータベース接続を確認していきます。
EC2インスタンスを準備する
EC2インスタンスを準備します。EC2インスタンスの作成については、以下の記事をご覧ください。
セキュリティグループを設定する
EC2インスタンスとRDSのデータベースを接続するネットワークに対する設定を、セキュリティグループにて設定します。
EC2ダッシュボードに移動し、「リソース」から「セキュリティグループ」をクリックします。一覧からRDSでデータベースを作成した際にに同時に作成されたセキュリティグループを選択し、「インバウンドルール」タグの「インバウンドルールを編集」をクリックします。
セキュリティグループの設定に移ります。「タイプ」には「MySQL/Aurora」を、「ソース」にはEC2のセキュリティグループを設定し、「ルールを保存」をクリックします。
この設定により、データベースのポート3306によって、EC2インスタンスと接続することが可能となります。
MySQLのデータベースと接続する
EC2に接続して、EC2のインスタンス内からRDSのMySQLデータベースとの接続設定を行っていきます。事前準備として、RDSで作成したデータベースの詳細画面で下記画像赤枠部のエンドポイントをメモしておきます。
ローカルPCからSSHでEC2インスタンスに接続します。接続後、EC2上にMySQLをインストールしていない場合は、下記コマンドでMySQLをインストールします。
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install mysql-server
※上記はOSがUbuntuの場合のコマンドです。Linuxの場合は、下記の記事をご覧ください。
MySQLをインストールしたら、下記コマンドを入力してRDSサーバーに接続します。-uの後はRDSのデータベース作成時に設定したユーザー名、-hの後はメモしたRDSのエンドポイントを入力します
$ sudo mysql -u test -p -h test.*****.ap-northeast-1.rds.amazonaws.com
Enter password:と出たら、RDSインスタンスの作成時に設定したパスワードを入力してエンターキーを押すと、下記のように出力されmysqlコマンド入力モードとなります。
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 167
Server version: 5.7.37-log Source distribution
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
mysqlコマンド入力モードにおいて、以下のコマンドを実行すると、RDSのデータベース作成時に設定したデータベース名が表示され確認できるはずです。
mysql> show DATABASES;
以上で、RDSでのデータベース作成と、EC2インスタンスへのデータベース接続は完了です。
さいごに
これで、AWSのRDSを利用してMySQLのデータベースを作成する方法についての説明を終わります。
本記事はRDSによるデータベースの作成方法の紹介までとなっていますが、WEBアプリのインフラを構築する方法についてもっと全体的に知りたいという方は、下記の『【初心者向け】AWSでWEBアプリのインフラを構築する方法(EC2 + ELB + RDS + ACM + Route53)』をご覧ください!インフラを構築するための具体的なToDoアイテムと完了までの計画表をセットで公開してます。
コメント