技術検証：AWS CLIを使用したRDSインスタンス（MySQL）のバージョンアップ手順と主要パラメータ解説

## はじめに
この記事は、前回AWS CLIを使用して作成したRDSインスタンスの続きとなります。

https://qiita.com/free-honda/items/d56ae5c58ed124e8e6f1

:::note
***AWS CLIを使用すると、Amazon RDSのデータベース（DB）エンジンを簡単にバージョンアップすることが可能です！***
:::

未来の自分への備忘録として体系的に整理していますが、この記事が誰かの技術の支えになれば幸いです！

## 知識整理
今回解説するRDSやその操作については、以下の記事で詳しくまとめています。興味のある方はぜひ参考にしてください。

https://qiita.com/free-honda/items/d20fb420b98eb99bcddd

https://qiita.com/free-honda/items/1227b83d971e1b2b3b79

## 前提条件
AWS CLIがインストール済みで、初期セットアップが完了していることを前提に進めます。

***この記事では、以下のイメージで、前回作成したRDSインスタンスを手動操作ではなくコマンドラインでバージョンアップしていきます！***

![スクリーンショット 2024-12-23 21.54.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/d8de979a-6eb8-3a25-1d0e-e826dd3493f5.png)
引用画像：https://qiita.com/kokichi8/items/834ca1f26e80fe264733

***AWS CLIのインストール手順やセットアップについては、過去の記事を参考にしてみてください！***

https://qiita.com/free-honda/items/389059edbdb5e7adcd0b

https://qiita.com/free-honda/items/866986d98fdb2fc1a56e

また、今回の記事ではrootユーザーで技術検証を行っていますが、IAMユーザーで作業する場合は、IAMポリシーに「```AmazonRDSFullAccess```」または同等の権限が付与されていることを確認してください。

https://qiita.com/free-honda/items/5bb71782c8a84585206a

***IAMポリシーの設定手順については、上記の記事をご参考ください！***

## 補足事項
バージョンアップを行う前に、以下の点を確認してください。

:::note alert
- **RDSインスタンスが停止していない（```available```状態である）こと。**
- **アップグレード対象のDBエンジンが互換性を持つこと（互換性リストを確認してください）。**
:::

***さらに、事前にスナップショットやバックアップを取得することを強く推奨します！***

## 実際にバージョンアップしてみた
### バージョンアップ前の確認


以下のコマンドで、現在のDBエンジンバージョンを確認します。

```bash
aws rds describe-db-instances \
    --db-instance-identifier <your-db-instance-identifier> \
    --query "DBInstances[0].EngineVersion" \
    --output text
```

***```your-db-instance-identifier```の部分は、実際のRDSのインスタンス名に置き換えてください！***

現在のDBエンジンバージョンを確認した際の出力例は以下の通りです。

```bash
8.0.39
```

次に、アップグレード可能なDBエンジンバージョンを確認します。

```bash
aws rds describe-db-engine-versions \
    --engine mysql \
    --query "DBEngineVersions[].EngineVersion"
```

以下は、利用可能なDBエンジンバージョンの出力例です。

```bash
[
    "5.7.44",
    "5.7.44-rds.20240408",
    "5.7.44-rds.20240529",
    "5.7.44-rds.20240808",
    "8.0.32",
    "8.0.33",
    "8.0.34",
    "8.0.35",
    "8.0.36",
    "8.0.37",
    "8.0.39",
    "8.0.40",
    "8.4.3"
]
```

今回の技術検証では、```8.0.40``` へのメジャーバージョンアップを行います。

バージョンアップ前の状態では、マネジメントコンソール上で「```8.0.39```」であることが確認できました。

![スクリーンショット 2024-12-24 21.53.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/f46f9386-2efb-8a10-6b3f-fc146593ec60.png)

## DBバージョンアップ
以下のコマンドを使用して、指定したバージョンにアップグレードを実行します。

```bash
aws rds modify-db-instance \
    --db-instance-identifier <your-db-instance-identifier> \
    --engine-version <target-engine-version> \
    --apply-immediately
```

### パラメータ説明

:::note info
- **--db-instance-identifier**: アップグレード対象のRDSインスタンス名
- **--engine-version**: アップグレードするDBエンジンのバージョン（例: 8.0.30）
- **--apply-immediately**: trueにすると即時適用、falseの場合は次回のメンテナンスウィンドウに適用
:::

アップグレードが進行中であるか確認するには、以下のコマンドを実行します。

```bash
aws rds describe-db-instances \
    --db-instance-identifier <your-db-instance-identifier> \
    --query "DBInstances[0].DBInstanceStatus"
```

実際の出力例は以下になります。

```bash
"upgrading"
```

```DBInstanceStatus```が```available```に戻れば、アップグレード完了です！

![スクリーンショット 2024-12-24 21.52.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/f49bb2e6-9ec7-642e-7623-b2bf2f21e700.png)

## バージョンアップ後の確認
アップグレードが成功したかどうかを確認するには、以下のコマンドを実行してください。

```bash
aws rds describe-db-instances \
    --db-instance-identifier <your-db-instance-identifier> \
    --query "DBInstances[0].EngineVersion" \
    --output text
```

ターミナル上で、以下のように出力されていることを確認しました。

```bash
8.0.40
```

***また、マネジメントコンソール上でもバージョンが正常に ```8.0.40``` に更新されていることを確認できました！***

![スクリーンショット 2024-12-24 22.01.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/3ff7df7a-1d36-702a-be35-749be358bfd4.png)

***RDSインスタンスのステータスが「利用可能」と表示されていることも確認できました。これにより、検証は大成功です！***

![スクリーンショット 2024-12-24 22.02.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/ff30d668-7361-35ed-b022-abeb4e7d63d2.png)

## まとめ
AWS CLIを使用して、RDSインスタンス（MySQL）のバージョンアップ手順を解説しました。

:::note alert 
***基本的な手順を説明しましたが、IDや設定値を適切に修正すれば、そのままハンズオン形式で実践できる内容です。ぜひ試してみてください！*** 
:::

この記事が、どなたかの技術的な支えになれば幸いです。

## 関連記事

https://qiita.com/propella/items/807ec930c9f6c9f6d5b8

https://cloud5.jp/cli-rds/

https://qiita.com/kokichi8/items/834ca1f26e80fe264733

https://en-junior.com/rds_cli/