【小ネタ】RDSのマイナーエンジンアップグレードに失敗した話

こんにちは、クラウドソリューション事業部の本田です。今回は小ネタです。AWSを触っていてこんなエラーに遭遇しましたという内容のブログを書きたいと思います。

RDSのマイナーバージョンアップをしたかった

RDS(MySQL)で、利用しているバージョンが古かったのでマイナーバージョンアップを行う必要がありました(5.7.31から5.7.33)。そこで、マイナーバージョン自動アップグレードを有効化して、指定して時間にどうなっているかな、順調に進んでいるかな?と確認しにいくと、エラーが出てバージョンアップが停止していました。

Database instance is in a state that cannot be upgraded: PreUpgrade checks failed: RDS detected Incompatibilities upgrading to MySQL 5.7.33. More details can be found in the PrePatchCompatibility.log file, accessible in the 'logs' section below.

ログとイベントイベントに上記のようなエラーが出ていました。PreUpgradeで失敗している、詳細はログを確認してね、とありますね。では早速ログを確認して対応していきたいと思います。

エラーに対応する

1.ログを見つける

まずはログを見つけましょう、RDSコンソールのログとイベントのログに出力されているので、検索バーで「PrePatchCompatibility.log」と検索します。

ありました。こちらに詳細なログが記載されているので、ダウンロードして内容を確認します。

2.ログの内容を確認する

ログには以下内容が記載されていました。

Executing Compatibility Checks for the MySQL server at null.
  Source Version: null, Target Version: 5.7.33.
 1) The DB instance must have enough space to rebuild the largest table that uses an old temporal data format.
     The DB instance must have enough space for the largest table that uses an old temporal data format to rebuild.
     More Information:
         https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.MySQL.html#USER_UpgradeDBInstance.MySQL.DateTime57
 Make sure you have more than 40376532992 bytes available for the DB instance. - Scale storage so that there is enough space for the largest table that uses an old temporal data format, and make sure the storage type is gp2 or io1, if possible.
 Errors: 1
 Warnings: 0
 Database Objects Affected: 1

アップデートを行う際に、テーブルの再構築が必要でそのために必要な空きストレージがないとのことです。ちなみに40376532992 bytes(40GBくらい)の空き容量が必要とのことでした。

3.ストレージを増設する

今回の対応としては、ストレージを増設する対応を行いました。現在の空きストレージを確認して、ログにあった必要な空き容量となるようにストレージを増設します。

アップデートを行う

増設が完了したら再度アップデートを行いました。結果としては無事アップデートを行うことができました、めでたしめでたし。

最後に

自分自身こちらのエラーは初めて遭遇しました。社内で聞いてみてもこちらのエラーに遭遇した人はいないみたいだったので、ブログにしてみました。メジャーバージョンアップで失敗するといったことはたまにありますが、良い経験になりました。当たり前ですが、ログを読むって大事なことですね。