🌊

RDSのマイナーバージョン自動アップグレードを理解する

に公開

背景

RDS設定に「マイナーバージョン自動アップグレードの有効化」をチェックする項目があるけど、どれくらい影響があるものなのか気になって色々調べた時の内容を書いていきます。
普通に考えれば、知らないうちにアップグレード処理が走り、一時的な再起動が発生したりしてアプリケーションに支障がでる事体は避けるべき事態なので無効化が望ましいと考えるのが基本路線かと思いますが、仕組みを理解するのに少し時間を使ったのでここに残しておこうと思います。
今回はPostgreSQLを利用する際に調べた内容です。

結論

本番環境として利用する場合は無効化が望ましいと思います。

(前提)バージョンアップには種類がある

メジャーバージョンアップと、マイナーバージョンアップがあります。
マイナーバージョングレードの特徴は、「既存と互換性がある変更」のようです。

アップグレードには、メジャーバージョンのアップグレードとマイナーバージョンのアップグレードの 2 種類があります。一般的に、メジャーエンジンバージョンのアップグレードは、既存のアプリケーションと互換性のない変更を導入する場合があります。それに対して、マイナーバージョンのアップグレードには、既存のアプリケーションとの下位互換性がある変更のみが含まれます。

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Upgrading.html

マイナーバージョンアップグレードのようなメンテナンスとは

マイナーバージョンの他にも、RDSのメンテナンスにはハードウェアやOSを対象としたものもあります。

参考:
https://repost.aws/ja/knowledge-center/rds-required-maintenance

自動アップグレードを有効にした場合

自動アップグレードを有効にしていると、メンテナンスウィンドウ中に自動実行されます。

Amazon RDS でマイナーバージョンのテストと承認が完了すると、メンテナンスウィンドウの間にマイナーバージョンアップグレードが自動的に行われます。

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.PostgreSQL.Minor.html

マルチAZ構成にしていれば心配しなくていいのか

マルチAZ構成の場合でも、各インスタンスが一斉にアップグレードされます。

Amazon RDS はプライマリインスタンスとスタンバイインスタンスを同時にアップグレードします。アップグレードが完了するまで、データベースが数分間使用できない場合があります。

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.PostgreSQL.html

メンテナンスウィンドウである程度コントロールすれば何事も解決か

自動アップグレードを有効にした場合でも、メンテナンスウィンドウ期間中に実行されるので、ある程度制御できることがわかりました。ということは、しばらくアップグレード処理をさせたくない場合はメンテナンス設定でアップグレード処理を先送りにすることもできるということか。
→ メンテナンスのステータスによって延長できたりできなかったりするそう。
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Maintenance.html#USER_UpgradeDBInstance.Maintenance.Viewing

下記注意書きもあったので、頻度はさておき強制的にアップグレードされる可能性もゼロじゃない。

重大なセキュリティ問題が発生した場合、またはバージョンがサポート終了日に達すると、マイナーバージョン自動アップグレードオプションを有効にしていない場合でも、Amazon RDS はマイナーバージョン自動アップグレードを適用することがあります。

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_UpgradeDBInstance.Upgrading.html#USER_UpgradeDBInstance.Upgrading.AutoMinorVersionUpgrades

アップグレードタイミングを事前に把握しておくことはできるのか

re:PostでQAされていてこちらが参考になりました。
https://repost.aws/ja/questions/QUys9flpp3Q7OSYcPH_gtjvg/rdsでのマイナーバージョンアップロード発生する前にお知らせが出ますか

おわり

結論は冒頭の通り。どこまで考慮してどこまでフォローするか、環境に応じて適宜検討が必要です。

Discussion