Aurora Serverless v1 のサポート終了
2024/12/31 を以って Aurora Serverless v1(MySQL 5.7互換)のサポートが終了します。
ただし、対応する Aurora MySQL 2 が 2024/10/31 までとなっており、後述する移行手順の中で一時的に Aurora 2 を経由するので早めの対応が望ましいでしょう。
なお、単純に Serverless v2 に移行すればよいかというと、かなり性格の違うサービスになっているようなので検討が必要です。
v1とv2の違い
- クラスター内のインスタンスは不可視なのがv1
- 同一クラスター内でサーバーレスのインスタンスとプロビジョンドのインスタンスが同居もできるのがv2
- スケーリング性能が大きく向上
- 一方、コストはACU単価が倍になり、かつアイドル状態のときにACUをゼロにする(=停止する)オプションがなくなった
特にコスト面で見たとき、v2よりもプロビジョンドでリザーブドインスタンスを適用するなどしたほうがメリットが出るプロダクトもあるのではないでしょうか。
(開発環境で利用していたアイドル時停止オプションがないのは痛いです…)
【11/22更新】v2でもアイドル時停止オプションをサポート
待望のアイドル時停止オプション(最小キャパシティ0設定)がv2でもサポートされるようになりました。
これで気兼ねなくv2へのアップグレードが進められます。
- 対応エンジンバージョン:Aurora MySQL 3.08以上
アップグレード手順
手順はほぼ以下のサイトのとおりです。
(1) サーバーレス → プロビジョンドに変換
これはAWSコンソールからは作業できず、CLIでの作業となります。
aws rds modify-db-cluster \
--db-cluster-identifier CLUSTER_NAME \
--engine-mode provisioned \
--allow-engine-mode-change \
--db-cluster-instance-class db.t4g.medium
CLIバージョン 2.11.14以上が必要です(おそらく)
https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst
コマンドが成功すると、自動でスナップショットが保存され、クラスターが「変更中」になり、インスタンスも1つ作成されます。
(2) Aurora MySQL 2 → 3 へのアップグレード
ここは以前書いた記事と同様です。
(3) Aurora Serverless v2 への変更
※必要に応じて
コンソール上、インスタンスの「変更」からプロビジョンドからサーバーレスに変更します。
v2は簡単にプロビジョンドとサーバーレスの変更ができるようになりました。
Data API の対応
さて、実は非常に困ったことになったのがこれです。
あるフルサーバーレスプロダクトでは、LambdaからのアクセスをData API(aws-sdk の RDSDataService
)を使っていたので、アップグレードすると完全に動作しなくなってしまいます。
Aurora MySQL では、Data API に対応しているのが Serverless v1 のみ。
Serverless v2 も プロビジョンドの Aurora 3 も非対応なので、アップグレード先の選択肢がありません。
PostgreSQL は対応しているんだから、MySQL も対応してくれるのか…?
【9/29更新】Aurora MySQLでのサポート開始
9/26に発表がありました。
条件はありますが、これで安心してアップグレードができそうです。
- 対応エンジンバージョン:Aurora MySQL 3.07以上
- 対応インスタンスタイプ:rシリーズ(tシリーズはサポート外)