Amazon Aurora PostgreSQL 互換 (以下、Aurora PostgreSQL) の新機能として、複数のメジャーバージョンをまたいだアップグレードが可能になりました。
調べたことや検証したことを書き残しておきたいと思います。
メジャーバージョンのアップグレードに関するドキュメント
今回追加された機能に関するドキュメントは以下にあります。
ドキュメント履歴にも掲載されていました。
なお、この記事の執筆時点ではまだ日本語版のドキュメント履歴には載っていませんでした。
アップグレードの準備
Aurora PostgreSQL ではマイナーバージョンの自動アップグレードオプションが提供されており、ユーザとしては手動・自動の選択の余地があります。
一方、メジャーバージョンのアップグレードは自動アップグレードの対象ではないため、手動での対応が必要です。
理由はドキュメントにも記載されていますが、メジャーバージョンのアップグレードはバージョン間に破壊的な(後方互換性のない)変更が含まれる可能性があるためです。
このあたりは複数のメジャーバージョンにまたがったアップグレードにおいても変更はありません。
また、ドキュメントでは、メジャーバージョンのアップグレードに向けて以下のような観点で準備が必要と言及されています。
- パラメータグループの準備
- 拡張機能のアップグレードや削除
- サポートされないデータ型の削除
パラメータグループの準備は、互換性のあるパラメータグループの選定、あるいは新規カスタムパラメータグループの作成などを行います。
拡張機能のアップグレードはメジャーバージョンのアップグレードに連動しないため、拡張機能ごとに手動でアップグレードの判断が必要です。
また、メジャーバージョンをアップグレードする前に最新版へアップグレードしておく必要のある拡張機能もあるため、作業順序を予め整理しておくと良いでしょう。
実際には、上記以外にも様々な変更影響が想定されるため、(開発用途などの)サービス提供に影響しない環境でアップグレードの影響を十分に事前調査したうえで実施することをおすすめします。
アップグレードにかかる時間
今回は Aurora PostgreSQL のメジャーバージョンアップにかかる時間を 2 つのパターンで計測してみたいと思います。
検証のために用意したクラスタは以下のとおりです。
- Aurora PostgreSQL : db.r6g.large x 1 インスタンス
- アップグレード前のバージョン : 11.13
- アップグレード先のバージョン : 12.8, 13.4
- キャパシティータイプ : Provisioned
- Aurora レプリカの作成 : なし
- リージョン : ap-northeast-1 (東京)
コンソールで確認してみると、11.3 からメジャーバージョンをまたいで 13.4 にアップグレード可能であることがわかります。
メジャーバージョンをまたいだアップグレードと所要時間を比較するため、まずは 11.13 のクラスタを 12.8 のバージョンにアップグレードします。
今回は、できる限り単純にアップグレードにかかる時間のみを比較するため、クラスタ作成直後の(データが投入されていない)状態からアップグレードにかかる時間を計測してみました。
以下のように、コンソールに確認画面が表示されます。
アップグレードを開始すると、経過を RDS のイベント履歴から参照できる旨のメッセージが表示されました。
以下はアップグレードの完了までに記録されたイベントの一覧を示しています。
アップグレードの開始直前に、スナップショットを取得していることなどがわかります。
アップグレードの開始自体はイベントに記録されないようですが、最初の DB インスタンスのシャットダウンイベントから、アップグレードの完了イベントまでを所要時間とすると、おおよそ 845 秒 で完了しました。
次に、11.13 から 13.4 へのアップグレードを試します。 以下のように、コンソールに確認画面が表示されます。
アップグレードの完了までに記録されたイベントの一覧は以下のとおりです。
(先程の 11.13 → 12.8 と同様に)最初の DB インスタンスのシャットダウンイベントから、アップグレードの完了イベントまでを所要時間とすると、おおよそ 791 秒 で完了しました。
まとめ
Aurora PostgreSQL の新しい機能であるメジャーバージョンをまたいだアップグレードを試しました。
メジャーバージョンのアップグレードは破壊的変更を伴う場合があるため、事前に十分な検証は必要ですが、こうした手段があることは知っておくと Aurora をより便利に使えそうですね。