RDS マイナーバージョン自動アップグレードについて調べてみる
現在の状況
- RDS PostgreSQL エンジンを本番ワークロードで運用している。
- RDS には「マイナーバージョン自動アップグレード」という機能が備わっており、デフォルトだとこれが有効となっている。
マネージドサービスというのはこういう点なのだろうと一人でに納得したが、本当にサービス運用で問題ないか気になったので調べてみる。
知りたいこと
- マイナーバージョンの自動アップグレードにおける後方互換性の有無
- バージョンアップの挙動
前提
AWS はおそらくセマンティック・バージョニングに則っているので、その前提で進める。
すなわち、5.7.22 から 5.7.23 へのアップグレードを、マイナーバージョンのアップグレードとする。
とりあえずここを読む。
DB エンジンごとに仕様、挙動が違うのか… 🤔
それぞれを読まないといけないのは面倒。
マイナーバージョンのアップグレードに含まれるのは、既存のアプリケーションとの下位互換性がある変更のみです。マイナーバージョンのアップグレードを手動で開始するには、DB インスタンスを変更します。または、DB インスタンスの作成時または変更時に、[Auto minor version upgrade (マイナーバージョン自動アップグレード)] を有効にすることができます。これにより、Amazon RDS によって新しいバージョンがテストおよび承認されると、DB インスタンスが自動的にアップグレードされます。PostgreSQL DB インスタンスでリードレプリケーションを使用している場合は、ソースインスタンスのマイナーバージョンのアップグレード前に、すべてのリードレプリカをアップグレードする必要があります。
蓋開けてみたら当たり前かもしれないが、「マイナーバージョンのアップグレード = 下位互換性あり」ということで、早速知りたいことの一つ目を知ることができた。
PostgreSQL のマイナーバージョンの自動アップグレード
PostgreSQL DB インスタンスは、以下の基準を満たしている場合、メンテナンスウィンドウの間に自動的にアップグレードされます。
DB インスタンスの [Auto minor version upgrade (マイナーバージョン自動アップグレード)] オプションは有効になっています。
DB インスタンスでは、現在の自動アップグレードマイナーバージョン未満の DB エンジンのマイナーバージョンが実行されています。
ref. DB インスタンスのエンジンバージョンのアップグレード - Amazon Relational Database Service
これが 2 つ目の知りたかったことで要は上記 2 つを満たしている場合メンテナンスウィンドウでアップグレードが行われるという理解でいいのだろうか。
RDS メンテナンスウィンドウ
メンテナンスウィンドウは、DB インスタンスの変更やソフトウェアの修正が発生したときに、要求されたイベントまたは必要なタイミングを制御する機会です。 特定の週に保守イベントがスケジュールされている場合は、定義されている 30 分間のメンテナンス期間中に開始されます。
まとめ
アップグレードはマルチ AZ にしておいてもリードレプリカを用意しておいても同時にアップグレードが走るらしいのでダウンタイムが許容されないようなクリティカルなワークロードを運用している場合はこの辺の挙動を理解した上で設計しておく必要があるなと思った。