AWS RDSを使って簡単にMySQLデータベースを構築・接続する方法

## はじめに
今回は、AWSのマネージドデータベースサービス「RDS」を使って、MySQLデータベースの作成から接続確認までの流れをご紹介します。

RDSは、データベースの設定、スケーリング、バックアップの管理を簡単に行え、さまざまなデータベースエンジンをサポートしているため、データベース管理の手間を大幅に軽減できます。

前回の記事では、NoSQLデータベースサービス「DynamoDB」についても詳しく解説しています。興味があればぜひ読んでみてください。

https://qiita.com/free-honda/items/3e0e508f316d351274fb

## 前提条件
この記事を実施するには、以下の要件を満たしている必要があります。

:::note
**AWSアカウント：**
AWSアカウントを持っていることが前提です。

**RDSとMySQLの基本理解：**
RDSとMySQLの基本的な機能や操作方法を理解していることが望ましいです。公式ドキュメントや入門書を事前に確認しておくと、スムーズに進められます。
:::

## RDSについて
Amazon Relational Database Service（RDS）は、リレーショナルデータベースをクラウド上で簡単にセットアップ、運用、スケーリングできるフルマネージドサービスです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/3789f4fb-8f56-f435-0b0e-ca82bbe7b175.png)
引用画像：https://aws.amazon.com/jp/rds/#

RDSは、データベース管理のタスク（パッチ適用、バックアップ、障害復旧など）を自動化し、運用コストの削減や高可用性の確保を実現します。

これにより、インフラ管理にかかる時間を削減し、アプリケーション開発やデータ活用に集中できるようになります。

https://aws.amazon.com/jp/rds/

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

:::note
最新の選択できるエンジンは次の通りです。
**・Amazon Aurora（MySQL互換、PostgreSQL互換）**
**・Oracle**
**・MySQL**
**・MariaDB**
**・PostgreSQL**
**・SQL Server**
**・Db2**
:::

今回は、MySQLを使ってデータベースを構築していきます。

## MySQLについて

MySQLは、オープンソースのリレーショナルデータベース管理システム（RDBMS）で、データを効率的に保存し、整理するための仕組みを提供します。データの操作にはSQL（Structured Query Language）を使用します。

MySQLの詳しい説明はこちらの記事を参考にしてください。

https://www.sejuku.net/blog/9021

### 主な特徴

**リレーショナルデータベース：**
データは、テーブルと呼ばれる行と列からなる構造で保存されます。異なるテーブル間で関連性を持たせることが可能です。

**SQL対応：**
データの検索（SELECT）、追加（INSERT）、更新（UPDATE）、削除（DELETE）など、SQLコマンドを使って操作が行われます。

**オープンソース：**
MySQLは無料で利用でき、ソースコードも公開されているため、カスタマイズが可能です。

**高速でスケーラブル：**
大量のデータを効率的に処理でき、パフォーマンスに優れています。

## 構築の流れ
### ステップ1：DBサブネットグループの作成
RDSインスタンスをVPC内に配置する際には、どのサブネットにDBを作成するかを定義するサブネットグループが必要です。

AWS Management Consoleで「RDS」を検索し、RDSダッシュボードを開きます。左側のメニューから「サブネットグループ」をクリックし、「サブネットグループの作成」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/9dba1412-16bc-d231-c519-77ca8a50fd75.png)

サブネットグループに名前を付け、使用するVPCを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/906ce298-f943-0e88-aa5e-bb9b9dfec872.png)

2つ以上の異なるアベイラビリティゾーンに属するサブネットを追加し、「作成」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/fceb32af-3796-f164-9324-cfcd9b5d1596.png)

:::note warn
ここでは、インスタンスの構築と接続確認を目的として、publicサブネットにRDSインスタンスを配置しています。本番運用の場合は、RDSインスタンスをprivateサブネットに配置することが一般的です。
:::

### ステップ2：RDSインスタンスの作成
RDSダッシュボードで「データベースの作成」をクリックし、「標準作成」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/9c33925c-8140-195f-654f-4b8d3c7bd1af.png)

データベースエンジンは「MySQL」を選択し、最新のバージョンを選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/b18aad1f-0da3-013a-62c2-dff488fee8d3.png)


「DBインスタンスクラス」では、アプリケーションに応じたインスタンスタイプを選択します（例: db.t3.micro）。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/1dc2844b-9101-a33f-7962-bdba4c9934d6.png)

「ストレージオプション」でストレージタイプ（汎用SSD）や容量を設定し、自動スケーリングも選択可能です。「データベース設定」では、データベース識別子、マスターユーザー名、およびパスワードを指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/cb9d8226-b0c1-0420-b137-87014909fa45.png)


「VPC」セクションでは、先ほど作成したDBサブネットグループを選びます。最後に、「データベースの作成」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/cd8f35f7-37ec-0e5b-8061-245d9ca10f3d.png)

:::note warn
データベースの作成には約20分かかる場合があります。また、インスタンスの使用には費用が発生するため、必要ない場合は削除することをお勧めします。
:::

## 接続確認
RDSインスタンスが起動したら、データベースに接続してみましょう。

### RDSエンドポイントの確認
RDSダッシュボードで作成したデータベースを選択し、データベースの詳細画面から「エンドポイント」を確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/6173d947-2e9e-7729-738f-a4174e18ad36.png)

### MySQL WorkbenchやCLIからの接続
ターミナルやMySQL Workbenchを使用して、以下のコマンドで接続を試みます。ここでは、CloudShellを使って確認します。

```
mysql -h <エンドポイント> -P 3306 -u <マスターユーザー名> -p
```

上記のコマンドを実行すると、パスワードを求められるので、設定したパスワードを入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/934235ed-7b72-e227-4345-2d4e8ec09a2d.png)

接続に成功すれば、RDS上のMySQLにアクセスできていることが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/5339e569-caec-4b5a-7ba3-78aa7e842a99.png)

:::note alert
データベースに接続できない場合は、セキュリティグループなどを見直してください。
:::


## まとめ
今回のハンズオンでは、AWS RDSを使用してMySQLデータベースを作成し、接続確認までの一連の流れを説明しました。

RDSを使うことで、データベースの運用管理が簡略化され、インフラの運用負担を軽減できます。MySQLだけでなく、他のエンジンも同様の手順で構築できるので、ぜひ試してみてください。

## おまけ：hondaテーブルを追加する方法
まず、新しいデータベースを作成して使用します。

```sql
CREATE DATABASE honda_db;
USE honda_db;
```

次に、hondaという名前のテーブルを作成します。テーブルにはID、名前、モデル、年式の情報を格納するカラムを設定します。

```sql
CREATE TABLE honda (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    model VARCHAR(50),
    year INT
);
```

作成したテーブルは次のコマンドで確認できます。

```sql
SHOW TABLES;
```

最後に、テーブルにデータを追加し、内容を表示します。

```sql
INSERT INTO honda (name, model, year)
VALUES ('Civic', 'Type R', 2024);
SELECT * FROM honda;
```

**実際のSQLコマンドの実行画面**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/73dc28cd-14bd-5070-146a-6d127b14bdaa.png)

以上でhondaテーブルの追加とデータ挿入が完了です。

## 参考文献

https://www.ashisuto.co.jp/db_blog/article/amazon-rds.html

https://www.cloudsolution.tokai-com.co.jp/white-paper/2021/1020-261.html