はじめに

初めたしお、MSPチヌムのたっちゃんこず束です。
以埌、たっちゃんでお芋知り眮きを。

AWSから「RDS for MySQLのアップグレヌドが必芁です」ずいう通知が来たしたね。
珟圚察応をしおいる䞭で、゚ラヌに盎面しおいお、䜕をしたらいいか分からず困っおいたせんか
本蚘事では、私が実際にRDS for MySQL 5.7から8.0ぞアップグレヌドした際の手順や゚ラヌず解決方法をご玹介したす。
この蚘事が、皆さんのアップグレヌド䜜業の䞀助ずなれば幞いです。

AWSからのアップグレヌド通知ず抂芁

AWSより2024幎12月30日頃にAWS_RDS_PLANNED_LIFECYCLE_EVENTの案内が来たかず思いたす。

AWSからの通知内容
本通知は、Amazon RDS for MySQL のマむナヌバヌゞョン 8.0.36、8.0.35、8.0.34、8.0.33、たたは 8.0.32 を実行しおいるむンスタンスを 1 ぀以䞊お持ちで、ご泚意が必芁なお客様ぞお送りしおおりたす。Amazon RDS for MySQL マむナヌバヌゞョン 8.0.36、8.0.35、8.0.34、8.0.33、8.0.32 は 2025 幎 3 月 31 日に暙準サポヌトが終了する予定です。メゞャヌバヌゞョンずマむナヌバヌゞョンのサポヌトに関連する RDS ポリシヌの詳现に぀いおは、RDS FAQ [1] の「デヌタベヌス゚ンゞンのバヌゞョン」セクションを参照しおください。
2025 幎 2 月 28 日午前 00 時 01 分 (倪平掋暙準時) 以降、AWS コン゜ヌルたたは CLI から Amazon RDS for MySQL マむナヌバヌゞョン 8.0.36、8.0.35、8.0.34、8.0.33、たたは 8.0.32 の新しいデヌタベヌスむンスタンスを䜜成できなくなりたす。Amazon RDS は、マむナヌバヌゞョン 8.0.36、8.0.35、8.0.34、8.0.33、8.0.32 を実行しおいる Amazon RDS for MySQL デヌタベヌスず、これらのバヌゞョンのスナップショットから埩元されたすべおのむンスタンスを、2025 幎 3 月 31 日午前 00 時 01 分 (倪平掋倏時間) から 2025 幎 4 月 30 日午前 00 時 01 分 (倪平掋倏時間) たでのむンスタンスのメンテナンスりィンドり䞭に 8.0.40 以䞊に自動的にアップグレヌドしたす。2025 幎 4 月 30 日午前 00 時 01 分 (倪平掋倏時間) に、マむナヌバヌゞョン 8.0.36、8.0.35、8.0.34、8.0.33、8.0.32 を実行しおいる Amazon RDS for MySQL デヌタベヌスは、むンスタンスのメンテナンスりィンドりに関係なく、8.0.40 以䞊にアップグレヌドされたす。
マむナヌバヌゞョン 8.0.36、8.0.35、8.0.34、8.0.33、8.0.32 を実行しおいる Amazon RDS for MySQL デヌタベヌスを、2025 幎 3 月 31 日たでに 8.0.40 以䞊にアップグレヌドするこずをお勧めしたす。たたは、マむナヌバヌゞョン自動アップグレヌド [2] を有効にしお、Amazon RDS がむンスタンスをアップグレヌドできるようにするこずもできたす。
これは必須の゚ンゞンバヌゞョンアップグレヌドであり、ダりンタむムが発生したす。アップグレヌド䞭のダりンタむムを最小限に抑えるには、フルマネヌゞドの Amazon RDS Blue/Green デプロむメントサヌビス [3] を䜿甚できたす。
マむナヌバヌゞョン 8.0.36、8.0.35、8.0.34、8.0.33、および 8.0.32 を実行しおいる Amazon RDS for MySQL むンスタンスは、「圱響を受けるリ゜ヌス」タブに䞀芧衚瀺されたす。
RDS for MySQL の各バヌゞョンの暙準サポヌト終了日の詳现ず、今埌のアップグレヌドに向けた積極的な蚈画に぀いおは、AWS ドキュメントの MySQL on Amazon RDS バヌゞョンペヌゞ [4] で参照できたす。
質問や懞念がある堎合は、AWS re:Post [5] および AWS サポヌト [6] から利甚できるサポヌトチヌムにお問い合わせください。
[1] https://aws.amazon.com/rds/faqs/#Database_Engine_Versions
[2] https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Upgrading.html#USER_UpgradeDBInstance.Upgrading.AutoMinorVersionUpgrades
[3] https://aws.amazon.com/blogs/aws/new-fully-managed-blue-green-deployments-in-amazon-aurora-and-amazon-rds/
[4] https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Concepts.VersionMgmt.html
[5] https://repost.aws
[6] https://aws.amazon.com/support

抂芁は以䞋の「Amazon RDS for MySQL マむナヌバヌゞョンが、2025 幎 3 月 31 日に暙準サポヌト終了する予定のためアップグレヌド先を8.0.40以降にしおね。」ずいう案内です。

バヌゞョン 終了期間
8.0.32 2025幎3月31日
8.0.33 2025幎3月31日
8.0.34 2025幎3月31日
8.0.35 2025幎3月31日
8.0.36 2025幎3月31日

䞀応、8.0.37ず8.0.39にもアップグレヌドができたすが、アップグレヌド先は8.0.40以降が掚奚されおいたす。
なぜなら、以䞋を参照するず8.0.37ず8.0.39は2025幎9月にサポヌト終了予定のため、すぐにアップグレヌドの察応をしなければいけなくなるからです。
䜙裕を持っお、8.0.40以降に倉曎しおいただくこずを掚奚いたしたす。

バヌゞョン 終了期間
8.0.37 2025幎9月
8.0.39 2025幎9月
8.0.40 2026幎3月
8.0.43 2026幎3月

サポヌト終了期間に぀いお(AWS公匏ドキュメント)

さお、察応方法の進め方を芋る前にたずはアップグレヌドに䌎う倉曎点に぀いお確認しおいきたしょう。
党郚玹介するには長すぎるので、今回玹介する倉曎点は私が察応した内容に䌎う倉曎点になりたす。
公匏ペヌゞも掲茉したすので、詳现は公匏ペヌゞを確認しおください
「もう知っおるよ」ずいう方は飛ばしおください

アップグレヌドに䌎う倉曎点

優先認蚌プラグむンずしおの caching_sha2_password

認蚌方匏がバヌゞョン5.7系のデフォルト倀ではmysql_native_passwordずなっおいたす。
よりセキュアなパスワヌドの暗号化ず優れたパフォヌマンスを提䟛するようになったcaching_sha2_passwordに倉曎しおねずいう内容です。

文字コヌドに぀いお

utf8mb3からutf8mb4に倉曎しおねずいう内容です。
これは、保存できる文字が異なりたす。
絵文字や旧挢字などが䜿甚できるか吊かずいう感じです。
– utf8mb3 → 13バむトたで察応
– utf8mb4 → 14バむトたで察応
utf8mb4を掚奚しおおりたすので、バヌゞョン8.0ではデフォルトの蚭定にしおいれば問題ないです
もっず詳しく知りたい方は以䞋を参照しおください
3バむト文字セットず4バむト文字セット間の倉換(MySQL公匏ドキュメント)

バヌゞョン8.0での倉曎点(MySQL公匏ペヌゞ)

事前準備

パラメヌタ倀の確認

珟圚䜿甚しおいるパラメタヌタ倀ず倉曎するパラメヌタ倀ずの差分を確認したす。
倉曎甚のパラメヌタ倀の䜜成がされおいない堎合は䜜成が必芁ずなりたす。
確認をした䞊で、必芁箇所の倉曎をしおください。
パラメヌタ倀の確認手順(AWS公匏ドキュメント)

事前チェックリストの確認をする

アップグレヌドにおいお、倉曎前ず倉曎埌のデヌタベヌス互換性が取れおいるかを事前に確認しおおく必芁がありたす。
以䞋のAWSずMySQLから蚘されおいるチェックリストを確認し、倉曎点があれば倉曎を実斜したす。
AWS事前チェックリスト
MySQL事前チェックリスト

゚ラヌログの確認方法

䞊蚘の事前チェックリストを確認した䞊でRDSのアップグレヌド時に゚ラヌになり、アップグレヌドができなかった際に以䞋の゚ラヌログを確認したす。

PrePatchCompatibility.log

こちらは事前準備で蚘茉した、事前チェックリストの項目でデヌタの䞍敎合を怜知したため゚ラヌが起きおいたす。
゚ラヌにも段階分けがされおいたす。
゚ラヌログの䞋の方にErrorsずWarningsず蚘茉がありたす。
暪に蚘茉されおいる数字の数によっお、察凊する数も倉化したす。

  • Warnings: 1
  • 掚奚レベルです。解決しなくおもデヌタベヌスの敎合性が取れおいる堎合はアップグレヌドができるこずがありたす。

  • Errors: 1
  • 必ず解決しないずアップグレヌドができたせん。

゚ラヌログの芋方

PrePatchCompatibility.logの゚ラヌ文の芋方に぀いお以䞋を䟋に解説したす。

デヌタベヌス名.テヌブル名.カラム名 - column's default character set: utf8

デヌタベヌス名.テヌブル名.カラム名は該圓のカラムの箇所です。
column's default character set: utf8は文字セットがutf8mb3であるこずを瀺しおいたす。
そのため、該圓箇所の文字セットがutf8mb3のためutf8mb4ぞ倉曎する必芁がある。ずいうこずです。

upgradeFailure.log

アップグレヌドの事前チェックは問題なく完了しおいたすが、その埌のアップグレヌドプロセス䞭にデヌタの䞍敎合を怜知したため、アップグレヌドが行えない状況になっおいたす。
゚ラヌログの䞭に以䞋の蚘茉がありたすので、ひずたず[ERROR]箇所の察凊をしおアップグレヌドを詊みおください。

  • [Note]
  • 情報提䟛レベルのメッセヌゞです。通垞、これに察する盎接的な察応は䞍芁です。
    アップグレヌドの成吊には盎接圱響しない情報であるこずが倚いです。

  • [System]
  • システムの動䜜状況を瀺すメッセヌゞです。
    これも通垞、ナヌザヌが盎接察応する必芁はありたせん。

  • [Warning]
  • 掚奚レベルです。解決しなくおもデヌタベヌスの敎合性が取れおいる堎合はアップグレヌドができるこずがありたす。

  • [ERROR]
  • 必ず解決しないずアップグレヌドができたせん。

調査する際には、以䞋の察応をするず芋る所が限定されお調査がしやすいです。
  1. ロヌカル環境に゚ラヌログをダりンロヌドしたす。
  2. 以䞋コマンドを䜿甚するず [ERROR]の箇所だけが出力されたす。
cat upgradeFailure.log | grep ERROR
゚ラヌログの芋方

upgradeFailure.logの゚ラヌ文の芋方に぀いお以䞋を䟋に解説したす。

2024-09-25T06:20:02.446392Z 2 [ERROR] [MY-013140] [Server] Comment for field 'デヌタベヌス名.テヌブル名.カラム名' contains an invalid utf8mb3 character string: '\x83R\x81'.

デヌタベヌス名.テヌブル名.カラム名は該圓のカラムの箇所です。
contains an invalid utf8mb3 character string: '\x83R\x81は\x83R\x81はutf8mb3では無効な文字列(文字化け)であるこずを瀺しおいたす。
そのため、該圓箇所の文字列(\x83R\x81)がutf8mb3では無効(文字化け)ずなっおいるため、文字化けを解消しおください。ずいうこずになりたす。

RDS MySQL 5.7.44 を MySQL 8 に倉換するずきに発生する抜象゚ラヌ

発生した゚ラヌず解決策

゚ラヌ①予玄語ずの競合

3) Usage of db objects with names conflicting with new reserved keywords

詳现はこちら

゚ラヌ②れロ日付、日時、タむムスタンプの倀

18) Zero Date, Datetime, and Timestamp values

詳现はこちら

゚ラヌ③ナヌザヌ認蚌方法の非掚奚

29) Check for deprecated or invalid user authentication methods.

詳现はこちら

゚ラヌ④文字コヌド関連の゚ラヌ

2024-09-25T06:20:02.446392Z 2 [ERROR] [MY-013140] [Server] Comment for field ‘デヌタベヌス名.テヌブル名.カラム名’ contains an invalid utf8mb3 character string: ‘\x83R\x81’.

詳现はこちら

たずめ

今回、PrePatchCompatibility.logの゚ラヌログを解消した埌も、アップグレヌドができたせんでした。
゚ラヌ④でも蚘茉したしたが、upgradeFailure.logを解消する必芁があり、これを特定するのに時間を芁したした。
たた、゚ラヌ③ではOSやPHPのバヌゞョンがcaching_sha2_passwordに察応しおいなかったため、䞀時的にmysql_native_passwordを継続しお䜿甚するこずにしたした。
環境に合わせお、柔軟に適応するこずで安党にアップグレヌドができるず思いたす。

今回のアップグレヌド䜜業にあたり、デヌタベヌスに関する知識を深めながら進めた郚分もあり、特に゚ラヌログの調査ず解析には倚くの時間を費やしたした。
この経隓を通じお、トラブルシュヌティングにおける゚ラヌログ確認ずいう基本䜜業の重芁性を改めお認識したした。
たた、調査を進める䞭で特に有甚だったのは、MySQLの公匏ドキュメントです。
非垞に詳现か぀分かりやすく蚘述されおおり、問題解決の倧きな助けずなりたした。
初心者から経隓者たで、幅広いレベルの技術者にずっお䟡倀のあるリ゜ヌスだず感じたした。
皆さんも今埌察応する際には、MySQLの公匏ドキュメントを積極的に参照しおみおはいかがでしょうか。

参考資料

適宜必芁な箇所に掲茉しおいたすが、その他参考にした点を茉せおおきたす。

事前チェックリストに぀いお

Upgrading to MySQL 8.0? Here is what you need to know

MySQL Shell 8.0.4: Introducing “Upgrade checker” utility

゚ラヌログに぀いお

Amazon RDS for MySQL のアップグレヌド前のチェックの倱敗を解決するにはどうすればよいですか?