触って学ぶRDS ~MySQL構築~

aws

今回は、WEBサービスを作る上で欠かせない、Database を構築していきます。

AWSのDBにはいくつかの種類がありますが、
その中でも、世界で最も人気の高いオープンソースのリレーショナルデータベースである、
Amazon Relational Database Service(RDS)のMySQLを構築します。

DB構築後、DBが立ち上がっているかを確認する為に、
EC2インスタンスからDBに接続し、
データベース、テーブル、レコードを作成・アクセスしてみたいと思います。

やりたいこと

  • RDS for MySQLの構築
  • EC2インスタンスからMySQLへアクセス

AWS構成図

やることリスト

  • VPC内に、Public Subnet、Private Subnet を構築
  • Public Subnet 内に EC2インスタンス を構築
  • Private Subnet 内に MySQL を構築

料金の確認

AWSサービスには、無料で使えるサービスもありますが、当然有料サービスもあります。

本章では、分かる範囲でAWSサービスの料金について書こうと思いますが、私の理解不足で漏れていることもあります。

各サービスを使う際は、料金がどのくらい掛かるかを理解した上で、自己責任で利用ください。

RDS

以下、色々記載していますが、
結論、AWSアカウント作成から12か月間は、無料枠の範囲で使えると思います。

以下は、RDS利用時のコストの掛かる項目と単価です。

コスト項目単価備考
インスタンス0.104 USD / 時間・db.t3.medium
・支払いオプション(オンデマンド)
・マルチAZ配置なし
RDBプロキシ0.018 USD / 時間
データベースストレージ0.138 USD / GB 月・汎用SSD (gp3) ボリューム
・マルチAZ配置なし
バックアップストレージ0.095 USD / GB 月
スナップショットのエクスポート0.012 USD / GB 月・S3へエクスポートし、Athenaなどでのデータ解析
データ転送料(out)0.114 USD / GB 月・合計 100 GB のインターネットへのデータ転送 (アウト) を毎月無料

※ 2023/7/28記載

MySQLの料金の詳細に関しては以下を参照下さい。

料金 - Amazon RDS for MySQL | AWS
Amazon RDS for MySQL の料金の詳細をご覧ください。これは、クラウドでの運用とスケールインを容易にするフルマネージド型のリレーショナルデータベースです。使用した分だけのお支払いで、最低料金はありません。

無料枠

AWSアカウント作成から12か月間無料枠

  • 1 か月あたり 750 時間の、MySQL、MariaDB、PostgreSQL データベースを実行する Amazon RDS シングル AZ db.t2.micro、db.t3.micro、および db.t4g.micro インスタンスの使用時間 (該当する DB エンジン)
  • 20 GB の汎用 (SSD) データベースストレージ
  • 20 GB のデータベースバックアップおよび DB スナップショット用ストレージ

AWS の無料利用枠は、以下サイトを確認ください。

AWS クラウド無料利用枠 | AWS
AWS 無料利用枠を使用すると、AWS のプラットフォーム、製品、およびサービスを無料でお試しいただけます。各製品ごとの無料利用枠の詳細やご利用開始方法についてご紹介します。

VPC構築

MySQLは、VPC上に構築する必要があります。
そこで、VPCを構築していない人は、以下記事を参照してVPCを構築してください。

触って学ぶVPC ~Public subnet + Private subnet 構成~
Amazon Virtual Private Cloud(VPC)は、AWSのサービスの中でも理解しないといけない必須のサービスになります。VPCは、Amazon Web Services (AWS) が提供する、クラウド上に仮想...

EC2インスタンス構築

MySQLにアクセスする為に EC2インスタンス を構築する必要があります。
そこで、EC2インスタンス を構築していない人は、以下記事を参照して EC2インスタンス を構築してください。

触って学ぶEC2 ~WEBサイト作成~
今回は、AWSの醍醐味である、仮想サーバ環境を構築していきます。仮想サーバ環境を構築しただけでは楽しくないので、仮想サーバ上に簡易のWEBサイトを立ち上げ、ブラウザからWEBサイトの内容を表示していきます。やりたいこと...

MySQL構築

いよいよ MySQL を構築していきます。

AWSのコンソール画面にログインし、RDSサービスに遷移します。

設定~サブネットグループ~

サブネットグループとは、RDSデータベースインスタンスがプロビジョニングするサブネットをグループ化したものです。

RDSを構築するには必要なものなので、RDSを構築する前に作成する必要があります。

サブネットグループ > DB サブネットグループを作成 ボタンをクリックし、設定画面に遷移します。

サブネットグループの詳細

サブネットを追加

「作成」 ボタンを押すと、サブネットグループが出来ます。

設定~MySQL~

データベース > データベースの作成 ボタンをクリックし、設定画面に遷移します。

設定内容が多いので、画像を省けるものは省いていきます。

データベース作成方法を選択

「標準作成」を選択

オプション

「MySQL」を選択

テンプレート

「無料利用枠」を選択

設定

インスタンスの設定

インスタンスは、デフォルトの 「db.t3.micro」のまま。

ストレージ

接続

データベース認証

「パスワード認証」を選択

データベースの作成

「データベースの作成」ボタンを押して、数分待つとデータベースが出来上がります。

セキュリティグループの変更

DBに紐づけられた、「scg-waku-test-db」のソースが、PCのグローバルIPになっているので、
「scg-waku-test-web」に変えてあげましょう。

あと、セキュリティグループに、「ec2-rds-1」や「rds-ec2-1」が作成されていますが、
必要性を感じないので、不要なセキュリティグループは削除しておきましょう。

動作確認

先ずは、EC2インスタンスの中に入っていきましょう!

インスタンス > インスタンスID > 接続 > 「接続」ボタンを押すと、ブラウザにCLIが出てきます。

mysql パッケージのインストール

DBに入る為に、EC2インスタンスに mysql パッケージをインストールしましょう。

$ sudo yum install -y mysql

DBへログイン

$ mysql -h <DBのエンドポイント> -u waku -p

DBのエンドポイントは、以下に記載があります。
RDSサービス > データベース > DB 識別子 > エンドポイント

DB操作

$ create database sample;
$ use sample;
$ create table users(id int, name varchar(255));
$ insert into users values(1, "shishimaru");
$ select * from users;

はい、以下画面が表示されたら成功です!

MySQL [sample]> select * from users;
+------+------------+
| id   | name       |
+------+------------+
|    1 | shishimaru |
+------+------------+
1 row in set (0.00 sec)

データベースの停止/削除

無料枠内なら放置していても料金は発生しませんが、不要なら削除した方がいいですね。

RDSサービス > データベース > 任意「DB 識別子」の選択 > アクション > 一時的に停止 / 削除

最後に

如何でしたか?
座学で勉強するより更なる学びがあったのではないでしょうか。

タイトルとURLをコピーしました