Amazon Aurora PostgreSQL をServerless v2 に移行する
Aurora PostgreSQL のインスタンスをServerless v2 に移行する
今回やりたいこと
- 既存のAmazon Aurora をServerless v2 に切り替えます。
移行で注意すること
- Aurora MySQL で Aurora Serverless v2 が使用可能なエンジンバージョンは、バージョン 3.02.0 以降になります。Aurora PostgreSQL で Aurora Serverless v2 が使用可能なエンジンバージョンは、バージョン 15.2 以降、バージョン 14.3 以降、バージョン 13.6 以降になります。
- Aurora Serverless v2 が使用可能なエンジンバージョンの詳細は、こちらのドキュメントを参照ください。
- 既にAurora Serverless v2 をサポートするエンジンバージョンを使用している場合、特にバージョンアップ等を必要とせず、Serverless v2 への移行が出来ます。
- インスタンスのフェイルオーバーには、数十秒程度のダウンタイムがあります。ご承知おきください。
- 想定外のコストを回避するため、ACU(Aurora capacity unit) の最小容量と最大容量は、適切に指定します。
移行ステップを図解
- Aurora PostgreSQL クラスターがプロビジョニングされたインスタンス x2 で構成されています。
- クラスター内のインスタンスをServerless v2 に移行するため、Aurora Serverless v2 のリーダーを追加します。
- フェイルオーバーを行って、Aurora Serverless v2 のリーダーをライターに昇格させます。
- 経過観察の後に、プロビジョニングされたインスタンス x2 を削除します。
移行手順
- Aurora PostgreSQL クラスターがあります。ライター, リーダーがプロビジョニングされたインスタンスで構成されています。
- エンジンバージョンは、13.8 であり、Aurora Serverless v2 がサポートされているエンジンバージョンであることが分かります。
- 「アクション」→「リーダーの追加」を選択します。
- リーダーとなる追加インスタンスに Serverless v2 を選択します。
- ACU(Aurora capacity unit) を0.5~128 で指定します。ACUは、2 GiBのメモリと対応する CPU、ネットワークで提供されます。
- 追加インスタンスを配置するAZは、既存のライターインスタンスと同じ AZとします。
- フェイルオーバー優先順位は、既存のライターインスタンスに合わせます。
- Serverless v2 インスタンスの 1台追加に、約10分(7~9分くらい)掛かりました。続けて、リーダーインスタンスをもう1台追加します。
- 以下の通り、Aurora Serverless v2 のリーダーインスタンスが2台追加出来ました。(合計20分程度)
- Serverless v2 インスタンスを選択し、フェイルオーバーを実行します。「アクション」→「フェイルオーバー」を選択します。
- 以下の確認にて、「フェイルオーバー」を押します。
- 以下の通り、Serverless v2 インスタンスへフェイルオーバーが成功しました。
- フェイルオーバーの開始から完了まで、1分~1.5分程度掛かります。
- フェイルオーバーの実行中に、数秒から数十秒程度のダウンタイムがあります。クライアントからsql 接続が切断されました。
経過観察を行う
- 経過観察の期間はフェイルバックを考慮して、プロビジョニングのインスタンスは削除せず、キープしても良いと思います。
- ユースケースによっては、Aurora Serverless v2 の移行でコストが節約されるとは限りません。経過観察の期間に、スケーリングは行われるか、移行でインスタンスのコストは下がるか等を確認しましょう。
プロビジョニングのインスタンスを削除
- 最後に、移行の元になったプロビジョニングのインスタンスを削除します。
- 2つのインスタンス削除には、10分程度掛かりました。
補足
- リーダーの追加ではなく、既存のインスタンスを変更する方法もあります。インスタンスクラスをプロビジョニングのインスタンスから、Serverless v2 に変更する方法です。
- 実際に、インスタンスクラスを変更してプロビジョニングからServerless v2 への変更を試しました。リーダーの追加よりも、インスタンスクラスを変更する方が長い時間が掛かった認識です。私は、リーダーインスタンスの追加およびフェイルオーバーを行う手順を推奨します。