目次
- はじめに
- 前提
- バージョンの選択
- Postgresqlのリリースノート確認
- 検証環境で思い切ってバージョンアップ
- パラメータグループの差分確認
- 既存のパラメータグループの確認
- 製品の画面を操作して動作検証
- おわりに
はじめに
チームで使用していたRDS for PostgreSQLのバージョンが12.17だったのですが、リリースカレンダーより2025年2月28日に標準サポートが終了してしまうため対応しました。
この手のバージョンアップは初めてで、「バージョンアップしても問題ないことをどうやって調べればいいんだ」という感じで行っていたため、今後のために備忘録として残します。
前提
- RDSのリソースはAWS CDKで管理している
- 事前確認はもちろん検証環境で行っている
バージョンの選択
AWSの公式ドキュメントのRDS for PostgreSQL のメジャーバージョンアップグレードの選択でサポート可能なバージョンを選択します。
12.17に関して、最新のアップグレードターゲットは16.1だったため、16.1でひとまずバージョンアップすることにしました。
(最新のアップグレードターゲット以降のバージョンは選択できない)
PostgreSQLのリリースノート確認
日本語版を参照しました。
12.17~16.1にあげるうえで懸念すべき点はないか確認しました。
検証環境で思い切ってバージョンアップ
本番環境ではないし、最悪壊れたらバージョン戻せばいいだろうということで「えいっ」と思い切ってバージョンアップしました。
バージョンアップ後は統計情報再生成のため以下を実行しました。
ANALYZE VERBOSE;
参考↓
パラメータグループはCDK側で自動的に作成してくれる処理だったのでその辺は楽でした。
パラメータグループの差分確認
バージョンアップした環境(検証環境)とまだバージョンアップしてない環境(本番環境)のパラメータグループを比較して、差分が出てきたパラメータに対して問題ないかも調査しました。
メリットがあったり、逆に問題がありそうなパラメータに関しては本番環境にRDSの変更を適用する際にはデフォルト値から値を変更しました。
やり方は以下を参考にしました
20個近く差分があったので大変だった記憶はあります笑
各パラメータに関しては、AWSやPostgreSQLの公式ドキュメント、qiitaの記事などを参考にさせていただきました。中でも@nuko_yokohamaさんの記事はとても分かりやすくまとまっており、重宝していました。ありがとうございました
既存のパラメータグループの確認
もともとパラメータの中でデフォルト値ではなく、値を明示的にセットしていたものもあったのでそれらが問題なく動いているかどうかも確認しました。
調べたパラメータ
pgaudit.role
shared_preload_libraries
pgaudit.log
pgaudit.log_catalog
pgaudit.log_relation
pgaudit.log_parameter
pgaudit.log_statement_once
rds.log_retention_period
log_min_duration_statement
製品の画面を操作して動作検証
いくら調べても実際に製品が動かなければ意味ないので、お客様の基本的な操作を開発側でも検証して問題ないかを調べました。特に動かなくなったとかはなく、問題がありませんでした。あとは実際に運用をしてみて様子を見る感じです。
おわりに
最後まで読んでいただき、ありがとうございました。
僕のように初めてRDSのメジャーバージョンアップをやるがどうやって検証すればいいかわからないという方にとって少しでも参考になれば幸いです。
バージョン16.1も2025年3月31日に標準サポート終了するからまた対応しないといけないよなあ...