ForgeVision Engineer Blog

フォージビジョン エンジニア ブログ

マイナーバージョン 8.0.29 は非推奨になりました。該当する最新のマイナーバージョンにアップグレードすることをお勧めします。

こんにちは、尾谷です。
前回投稿した RDS の記事 が好評なので RDS 関連のブログをもう一本書いてみました。

内容は、RDS の 8.0.19 を利用していて 8.0.29 にスケジューリング・アップグレードしたところ、表題のメッセージが出て行き詰まった事故的エピソードとなります。

事故状況

RDS のマイナーバージョンのアップグレード作業を行なっていて、ステージング環境のアップグレード★ で事象に直面しました。

  • 開発環境の RDS: 8.0.19 → 8.0.29
  • ステージング環境の RDS: 8.0.19 → 8.0.29
  • 本番環境の RDS: 8.0.19

経緯

7 月上旬に「開発環境」で稼働する RDS のエンジンバージョンを 8.0.19 から 8.0.29 にアップグレードしました。
バージョンは当時の最新版で、AWS から 2022 年 6 月にリリースされた記事を参考に 8.0.29 を採用しました。
動作検証を行いましたが、アプリケーションの挙動に問題はありませんでした。

aws.amazon.com

ステージング環境は職員の方々が利用されるため、午前 7 時にメンテナンスウインドウを設定して自動アップグレードするように設定することになりました。

アップグレード実施

一通り確認が終ったため、7/21 に ステージング環境の RDS インスタンスもアップグレードする調整を行いました。
前日の 7/20 にメンテナンスウインドウを翌日の午前 7 時 (JST) に変更し、 DB エンジンバージョンを 8.0.29 にアップグレードされるようスケジューリングを行いました。

翌日、RDS コンソールより状況を確認したところ、8.0.29 は非推奨になったと表示されていました。

急いで開発環境の RDS を確認すると同じく警告表示されていました。

そして、本番環境にて 8.0.28 までしか選択できない状態になっているのを確認しました。

バージョンダウン

RDS はバージョンアップ、アップグレードが可能で、バージョンダウン、ダウングレードはスナップショットからの復元という理解でした。
 
「該当する最新のマイナーバージョンにアップグレードすることをお勧めします。」と記載があることから、ダメ元でバージョンの変更を試みましたが、やはりリリースされている最も大きいバージョンである 8.0.29 以外が選択できない状態になっていました。

綿密に社内調整、検証、お客様調整を行って、作業当日に陥った事象で自分の不幸を呪いましたが、AWS サポートに問い合わせすることにしました。

裏づけ検証

AWS サポートに問い合わせる前に、根拠と裏付けを行うことにしました。

以下、公式ドキュメントに従って describe-db-engine-versions にて、DB エンジンバージョンのアップグレードなど、メンテナンス更新が DB インスタンスで利用可能かどうかを確認しました。

DB インスタンスのエンジンバージョンのアップグレード - Amazon Relational Database Service

CloudShell にて以下を投入すると、

aws rds describe-db-engine-versions \
--engine mysql \
--engine-version 8.0 \
--region ap-northeast-1 \
--query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" \
--output text

以下の戻り値がありました。8.0.29 の文字列は見つけることができませんでした。
東京リーション (ap-northeast-1) 以外にも、バージニア北部リージョン (us-east-1) や、大阪リージョン (ap-northeast-3) を確認しましたが、8.0.28 が最新でした。

[cloudshell-user@ip-10-0-74-89 ~]$ aws rds describe-db-engine-versions \
> --engine mysql \
> --engine-version 8.0 \
> --region ap-northeast-1 \
> --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" \
> --output text
False   8.0.15
False   8.0.16
False   8.0.17

(中略)

False   8.0.26
False   8.0.27
False   8.0.28
False   8.0.27
False   8.0.28
False   8.0.28

以上より、RDS コンソールの不具合の可能性は低く、AWS にて 8.0.29 の配信をストップしたもののメンテナンスウインドウでスケジューリングされたためアップグレードされてしまった可能性を疑いました。

今後再度利用可能になる予定は現在のところない

AWS サポートに問い合わせたところ、以下のような内容の回答をいただきました。

  • RDS for MySQL 8.0.29 は、InnoDB ストレージエンジンに関する問題が確認されていること
  • INSTANT アルゴリズムを用いたカラムの追加や削除を行うと、データベースプロセスがクラッシュする問題があること。
  • 8.0.29 バージョンのインスタンス新規作成と、8.0.29 へのアップグレードができない状態にあること。
  • 新しいバージョンのリリースは予定しているが、現時点では未定になっていること。

以上より、同じ境遇になられた方はカラムの追加処理を控えるか、スナップショットから前のバージョンに戻すか、DMS を使うなどしてデータベースを移行する必要がありそうです。

7/31 以降は、8.0.21 以前のバージョンが起動できなくなる。と記載されていたため、上記 RDS は 7 月中にスナップショットから 8.0.19 に戻して、8.0.28 にアップして対応完了しました。

以上、事故エピソードのご紹介でした。
アップグレードをスケジューリングしたために偶然発生した事故でしたが、不幸中の幸いだったのは、本番環境には影響がなかったところでした。
公式ドキュメントと AWS サポートの支援があり無事乗り切ることができました。
ありがとうございました。