内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 Appendix PostgreSQLのバージョンアップ
バージョンアップポリシー
- 公式/バージョニングポリシー
- 2020/02/18現在
Version Current minor Supported First Release Final Release 12 12.2 Yes October 3, 2019 November 14, 2024 11 11.7 Yes October 18, 2018 November 9, 2023 10 10.12 Yes October 5, 2017 November 10, 2022 ...
- メジャーの最初のリリースから5年間サポート
- だいたい毎年メジャーアップデート
- 公式/マイナーアップデートロードマップ
* May 14th, 2020 * August 13th, 2020 * November 12th, 2020 * February 11th, 2021
- 3ヶ月ごとにマイナーアップデート
バージョンアップの種類
マイナーバージョンアップ
- 不具合修正やセキュリティ対応
- 深刻な場合はマイナーアップデートロードマップ外でマイナーを刻むこともある
- どのメジャーを使っていようが、最新のマイナーを使おうね
We always recommend that all users run the latest available minor release for whatever major version is in use.
- 同一メジャーバージョンにおいて、データベースクラスタには互換性あり
- 不具合依存の実装以外は影響をうけない
メジャーバージョンアップ
- 新機能追加含む
- データベースクラスタに互換性なし
- 「常に最新を使うべき」とは限らない、要件次第
- 5年以上使わないシステムなら上げない
- 5年以上使うなら上げる
- 開発コミュニティのサポートを受けられないリスクがあるため
マイナーバージョンアップの手順
- 基本の手順
- PostgreSQLサーバー停止
- PostgreSQL実行ファイル差し替え
- PostgreSQLサーバー再起動
- 不具合修正の内容いかんにより、追加の作業があることも
- リリースノート参照
ローリングアップデート
- 同期レプリケーションを組んでいる場合、プライマリ/スタンバイ両方上げる
- 停止時間最小化のためにローリングアップデートを検討する
- 流れ
メジャーバージョンアップの手順
- 公式
- 実行ファイルを入れ替えるだけでは駄目
- データベースクラスタに互換性がない
- しかるべき方法で移行する
- ダンプ/リストア
pg_upgrade
コマンド
- しかるべき方法で移行する
- 機能互換性がない
recovery.conf
が無くなってたり
- 運用方法に変更が生じることがある
- 監視対象のシステムカタログに変更が加わっているかも
- パラメータの追加・削除、デフォルト値の変更などがある
standby_mode
が無くなったりrecovery.conf
のtrigger_file
がpostgresql.conf
のpromote_trigger_file
になってたり
- データベースクラスタに互換性がない
ダンプ/リストアによるデータ移行方式
- 古い方法
- めちゃ時間かかる
pg_dump
でダンプ書き出しpsql
(-Fp)、pg_restore
(-Fc, -Ft)
pg_upgradeコマンドによるデータ移行方式
拡張機能を使った場合の注意点
- contrib等の拡張機能のモジュールもバージョンアップする
- PostgreSQLのバージョン依存なので適切なものに
- 拡張機能専用のテーブルが存在する場合、こちらも適切に移行する必要がある