はじめに
サポート切れ直前のインスタンスタイプを使用し続けたり、DBエンジンのアップデートを行わず放置したりしてませんか?
今回は本番環境にて、
空きストレージ容量残り3パーセント以下、しかしストレージの拡張が行えません!まもなく本番DB停止します! って状況に遭遇しました。(伊吹マヤちゃんっぽい感じで)
何とも言えない緊張感が味わえますが、心臓によくないのでこうなる前にこまめなアップデートで対策しておきましょう。。。。
放置しちゃダメです。後で辛い目にあいます。
※本記事で取り上げているインスタンスタイプやDBエンジンバージョンが古く、検証環境での再現が難しいため画像無しとさせていただきます。
目次
環境について
RDSのインスタンスタイプ、DBエンジンバージョンは以下のようになってます。
インスタンスタイプ | DBエンジン | バージョン |
---|---|---|
db.m3.large | MySQL | 5.7.31 |
発生した事象の詳細
コンソール画面からいつものようにRDSのストレージを拡張しようとしたのですが。。。
ストレージ拡張の欄が選択できない?! と焦りました
インスタンスタイプが古いからかなぁと思ってインスタンスタイプを変更しようと思ったのですが、インスタンスタイプのプルダウンも表示されません。
AWSから完全に見放されたか。。。と思いましたがDBエンジンバージョンを5.7.33以上(2022/12/17時点で選択できる一番古いバージョン)を選ぶとプルダウンでインスタンスタイプを選択できるようになってました。
この状態になるとストレージ拡張の箇所も設定できるようになりました。
これで解決だーと安堵しましたが、さらなる問題が。。。
終わらない再起動
DBエンジンバージョンを5.7.33以上を選択すると、何も選択できなかったインスタンスタイプの項目が選択できるようになり、ストレージ拡張の欄も設定できるようになりました。
この状態で「すぐに適用」を選択して実行するも、「保留中の変更」となったまま更新が始まりませんでした。
仕方ないのでRDSを再起動したのですが、今度は「再起動」のまま固まって動かなくなりました。。。
原因
原因としてはm3のインスタンスタイプとDBエンジンバージョン(5.7.40)の組み合わせがサポートされておらず、内部処理が正常に行えなくなっていたからでした。
※通常はインスタンスタイプ変更とDBエンジンバージョンを同時にアップデートしても問題ありません。
この状態になってしまうと自分でどうにもすることができないのでAWSサポートに連絡し、DBエンジンバージョン更新のタスクをキャンセルしてもらう必要があります。
そして、内部処理がうまくいかない組み合わせで処理を進めるためには、インスタンスタイプを先に変更し、その後でDBエンジンバージョンを変更する必要があります。
気づいた方がいるかと思いますが、今回の事象はDBエンジンバージョンの「5.7.33」以上を選択した状態でないとインスタンスタイプの項目が選択できませんでした。
つまり「5.7.31」のバージョンを使用している状態でコンソール上からインスタンスタイプを変更しようとしてもそもそも選択できないため、インスタンスタイプとDBエンジンバージョンは同時に変更せざるを得ないわけです。
解決策
インスタンスタイプだけを変更したいのにコンソール上からできなくて困った。。。。
そんなときにはAWS CLIコマンドの出番です。
CloudShellを開き以下のコマンドを実行することでインスタンスタイプとDBエンジンバージョンを別々に変更することができます。
#インスタンスタイプをdb.m5.largeに変更する
# db.m5.large への変更
aws rds modify-db-instance --db-instance-identifier "DB識別子" --db-instance-class db.m5.large --apply-immediately
#5.7.40 への変更、ストレージの拡張:170GiBに
#この2つは同時に変更してもOK
aws rds modify-db-instance --db-instance-identifier "DB識別子" --engine-version 5.7.40 --allocated-storage 170 --apply-immediately
さいごに
今回はストレージを拡張するだけなのに色々苦しめられたので原因と解決法を書いてみました。
AWSはこれからもアップデートが入って古い世代はどんどん使用できなくなってくるし、それに伴って想定していない不具合とかも出てくるかと思います。
ギリギリで対応しようとしたけど解決に時間がかかって間に合わず、サービス中断なんてことが起こらないことを祈ってます。。。。
今回はここまでです。
最後まで読んでいただきありがとうございました。