Closed
4

RDS マイナーバージョン自動アップグレードについて調べてみる

ピン留めされたアイテム

現在の状況

  • RDS PostgreSQL エンジンを本番ワークロードで運用している。
  • RDS には「マイナーバージョン自動アップグレード」という機能が備わっており、デフォルトだとこれが有効となっている。

マネージドサービスというのはこういう点なのだろうと一人でに納得したが、本当にサービス運用で問題ないか気になったので調べてみる。

現在運用している DB の設定を知りたい場合はマネジメントコンソールより RDS を開いて、任意の DB を選択。「メンテナンスとバックアップ」というタブから確認することができる。

知りたいこと

  • マイナーバージョンの自動アップグレードにおける後方互換性の有無
  • バージョンアップの挙動

前提

AWS はおそらくセマンティック・バージョニングに則っているので、その前提で進める。
すなわち、5.7.22 から 5.7.23 へのアップグレードを、マイナーバージョンのアップグレードとする。

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

マイナーバージョンのアップグレードに含まれるのは、既存のアプリケーションとの下位互換性がある変更のみです。マイナーバージョンのアップグレードを手動で開始するには、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 分間のメンテナンス期間中に開始されます。

データベースエンジンレベルにアップグレードするには、ダウンタイムが必要です。

ref. 必要な Amazon RDS メンテナンスの実行時におけるダウンタイムを最小限に抑える

まとめ

アップグレードはマルチ AZ にしておいてもリードレプリカを用意しておいても同時にアップグレードが走るらしいのでダウンタイムが許容されないようなクリティカルなワークロードを運用している場合はこの辺の挙動を理解した上で設計しておく必要があるなと思った。

このスクラップは1ヶ月前にクローズされました
ログインするとコメントできます