Amazon RDS(PostgreSQL)のエンジンバージョンとインスタンスクラスを同時変更する際の注意点⚠️

こんにちは、インフラエンジニアの 加藤(@kuromitsu_ka)です。

はじめに

Amazon RDSのEoS対応で、インスタンスクラスとエンジンバージョンを変更する作業をしました。その際、インスタンスクラスとエンジンバージョンを同時に変更しようとしたのですが即時適用されず困りました。

解決の流れ

社内のサポートを受けて、保留になった変更を取り消す方法を教えて貰いました。保留になっていたインスタンスクラスとエンジンバージョンの変更の内、エンジンバージョンの変更を取り消したところ、インスタンスクラスの変更が走りました。その後、エンジンバージョンも変更して、無事、メンテナンス対応できました。

わかったこと

Amazon RDSの変更が保留に入ってしまった問題ですが、AWSサポート窓口に質問したところ、既知の問題だったそうです。

Amazon RDSのインスタンスクラスとエンジンバージョンを変更する際は、インスタンスクラスと、エンジンバージョンとで、2回に分けて変更する手順を推奨しているとのことでした。

以下、作業ログ

インスタンスクラス エンジンバージョン
作業前 db.m3.xlarge 11.15
作業後 db.m5.xlarge 11.18

インスタンスクラス変更とエンジンバージョンのバージョンアップを同時に適用しようとしたら、変更が保留になってしまった。

  • 実行したコマンド
$ aws rds modify-db-instance \
    --db-instance-identifier ${DB名} \
    --engine-version ${バージョン} \
    --db-instance-class ${インスタンスクラス} \
    --no-allow-major-version-upgrade \
    --apply-immediately
  • --apply-immediately をつけているのに保留となってしまった。
"PendingModifiedValues": {
            "DBInstanceClass": "xxx",
            "EngineVersion": "xxx"
        },
  • 保留の取り消し
    • 変更前の値を適用することで、保留状態を脱することができました
$ aws rds modify-db-instance \
          --db-instance-identifier ${DB名} \
          --engine-version ${変更前のエンジンバージョン} \
          --apply-immediately

振り返り

該当のインスタンスクラスが、エンジンバージョンをサポートしていないというわけではありませんでした。

Amazon RDS DB エンジンとインスタンスクラスでサポートされている Performance Insights - Amazon Relational Database Service

今回の問題ですが、開発環境ではうまく行って、本番環境だけ発生しました。

  • こちらは一度のコマンドでインスタンスクラスもエンジンバージョンも変更できた。(たまたまかもしれない。
インスタンスクラス エンジンバージョン
作業前 db.t2.micro 11.15
作業後 db.t3.micro 11.18

当日は、困りましたが、その場で社内のサポートを受けて解決できました。個人的に、Amazon RDSの変更取り消し(と言っていいのか微妙ですが)コマンドが、裏コマンドっぽいので気に入りました。

株式会社エニグモ すべての求人一覧

hrmos.co