RDS 自動マイナーバージョンアップグレードの挙動について調べてみた
はじめに
どうも、わんこ大好きあきやまです。
直近、RDSで動くMySQLの挙動について調査する機会がありました。
内容としては、自動マイナーバージョンアップグレードは有効だが実際はマイナーバージョンアップグレードが起こらないという事象です。そして答えはAWS 公式に記載されていました。
結論
まずは結論です。
自動マイナーバージョンアップグレードが動作するには、以下のすべての条件を満たす必要があります。
| # | 条件 | 備考 |
|---|---|---|
| 1 | 自動マイナーバージョンアップグレードが有効 | DB インスタンスの設定で Auto minor version upgrade が Yes |
| 2 | 自動バックアップが有効(バックアップ保持期間 > 0) | バックアップ保持期間が 0 だと動作しない |
| 3 | 現在のバージョンが自動アップグレードターゲットより低い | AWSが指定するターゲットバージョンが存在する必要がある |
自動マイナーバージョンアップグレードの仕組み
アップグレードターゲットの決定
AWSは各メジャーバージョンに対して、1つの特定のマイナーバージョンを「自動アップグレードターゲット」として指定しています。新しいマイナーバージョンがリリースされても、即座にターゲットになるわけではありません。AWSは以下の基準を評価したうえでターゲットを決定します。下記は公式サイトに記載があったものです。
- 既知のセキュリティ問題
- MySQL コミュニティバージョンのバグ
- マイナーバージョンリリース以降のフリート全体の安定性
なので基本的には、マイナーバージョンアップグレード後も問題なく動作するはずです。
※アプリ要件などによっては、動かない可能性もあるので設定前にご確認を
現在のアップグレードターゲットの確認方法
AWS CLIで現在のアップグレードターゲットを確認できます。
aws rds describe-db-engine-versions \
--engine mysql \
--engine-version 8.0.42 \
--region ap-northeast-1 \
--query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" \
--output table
----------------------------------
| DescribeDBEngineVersions |
+--------------+-----------------+
| AutoUpgrade | EngineVersion |
+--------------+-----------------+
| False | 8.0.43 |
| True | 8.0.44 |
| False | 8.0.45 |
| False | 8.4.3 |
| False | 8.4.4 |
| False | 8.4.5 |
| False | 8.4.6 |
| False | 8.4.7 |
| False | 8.4.8 |
+--------------+-----------------+
AutoUpgrade が true になっているバージョンが、自動アップグレードのターゲットです。
今回だと8.0.44にとなります。
アップグレードのタイミング
条件をすべて満たしている場合、メンテナンスウィンドウ中に自動的にアップグレードが実行されます。
メンテナンスとバックアップを選択し赤枠の箇所にこのように表示されます。

自動マイナーバージョンアップグレードの実行をイベントから確認する
自動マイナーバージョンアップグレードが実際に実行されたかどうかは、RDSの「最近のイベント」から確認できます。
マネジメントコンソールでの確認
RDSコンソール → 左メニュー「イベント」から、対象のDB インスタンスに関するイベントを確認できます。
自動マイナーバージョンアップグレードが実行された場合、以下のようなイベントが記録されます。

以上でした!!となるところ、調査中に以下リソースを確認したところ本来マイナーバージョンアップグレードが行われない場面(自動バックアップor自動マイナーバージョンアップグレード がOFF) でもマイナーバージョンアップグレードが行われる場面があるようです。
自動マイナーバージョンアップグレードが無効でもバージョンが上がるケース
以下のケースでは、設定に関係なくバージョンが上がる可能性があるようです。
1. RDS延長サポート終了時
RDS延長サポートの終了日を過ぎたバージョンのDB インスタンスは、次のメジャーバージョンへ自動的にアップグレードされます。強制アップグレードについても、RDSイベントとして記録されるため、前述のイベント確認方法で検知できます。
まとめ
| ポイント | 内容 |
|---|---|
| 自動マイナーバージョンアップグレードの動作条件 | 有効化 + 自動バックアップ有効(保持期間 > 0) |
| 動作しない場合のよくある原因 | バックアップ保持期間が 0 になっている |
| アップグレードの確認方法 | RDSの「最近のイベント」 |
| 無効でもバージョンが上がるケース | 延長サポート終了 |
自動マイナーバージョンアップグレードを有効にしているのに動作しない場合は、まずバックアップ保持期間の設定を確認してみてください。
また、自動マイナーバージョンアップグレードを無効にしている場合でも、強制アップグレードの可能性があることを考慮し、計画的なバージョンアップ運用をしていくのって大事ですね






