-
Notifications
You must be signed in to change notification settings - Fork 14
Description
環境:
OS:RHEL 8.6
ソフトウェア:
PostgreSQL 14.4
パッケージ:
pg_statinfo14.0
当方環境でpg_statinfo14.0 -> 14.2のアップグレードを下記の手順で行いました。
-
postgresql.conf の shared_preload_libraries から pg_statsinfo を取り除き、全ての pg_statsinfo.* パラメータを削除(コメントアウト)した後に、PostgreSQL を再起動します。
-
rootユーザーでパッケージを更新します。
rpm -Uvh pg_statsinfo-14.2-1.rhel8.x86_64.rpm -
設定ファイルに shared_preload_libraries = 'pg_statsinfo' と pg_statsinfo.* パラメータを再度有効にして、開始対象側 PostgreSQL を再起動します。
しかし、その後、手動・自動 snapshot がどちらも取得できなくなっています。
ログは下記のようです。
2023-08-03 03:17:11 EDT 4589 64cb5477.11ed-1 0 LOG: pg_statsinfo launcher started
2023-08-03 03:17:11 EDT 4591 - (pg_statsinfod, , , pg_statsinfod) LOG: pg_statsinfo: start
2023-08-03 03:17:11 EDT 4591 - (pg_statsinfod, , , pg_statsinfod) ERROR: pg_statsinfo: pg_statsinfo.control format incompatible
2023-08-03 03:17:11 EDT 4591 - (pg_statsinfod, , , pg_statsinfod) DETAIL: pg_statsinfo.control was created with STATSINFO_CONTROL_VERSION 140000 (0x000222e0), but the pg_statsinfo was compiled with STATSINFO_CONTROL_VERSION 140200 (0x000223a8)
2023-08-03 03:17:11 EDT 4591 - (pg_statsinfod, , , pg_statsinfod) ERROR: pg_statsinfo: incompatible statsrepo schema: version mismatch
2023-08-03 03:17:11 EDT 4591 - (pg_statsinfod, , , pg_statsinfod) LOG: pg_statsinfo: pg_statsinfo is starting in fallback mode
2023-08-03 03:17:11 EDT 4591 - (pg_statsinfod, , , pg_statsinfod) WARNING: pg_statsinfo: writer discards 1 items
2023-08-03 03:18:48 EDT 4591 - (pg_statsinfod, , , pg_statsinfod) WARNING: pg_statsinfo: writer discards 1 items
検証して出た上記のメッセージ「ERROR: pg_statsinfo: incompatible statsrepo schema: version mismatch」を見ると、
古いデータは削除する必要がある(マイナーバージョンアップでも互換性は無い)ように思います。
つまり、アップグレード後にスキーマの作り直しが必要あります。
公式のpg_statsinfo (14 ~)キュメントのフォールバックモードの説明によると、
リポジトリDBの復旧に関する点検事項と対処方法を次のように示しています。
・リポジトリDBに接続できない場合
statsrepo スキーマのバージョンが合わない場合
(正しいバージョンの statsrepo スキーマは設定リロード時に自動的に登録されます)
pg_statsinfo (~ 13)以前の場合、次のように示しています。
リポジトリDBに接続できない場合
・リポジトリDBの稼動状態を確認し、リポジトリDBが停止している場合はリポジトリDBを起動してください。
・設定ファイルのリポジトリDBへの接続文字列(pg_statsinfo.repository_server)を確認し、設定が誤っている場合は修正してください。(要設定リロード)
statsrepo スキーマのバージョンが合わない場合
・statsrepo スキーマを削除するか、リポジトリDBのデータベースを別に作成してください。
(正しいバージョンの statsrepo スキーマは設定リロード時に自動的に登録されます)
https://pgstatsinfo.sourceforge.net/documents/statsinfo13/pg_statsinfo-ja.html#fallback-mode
ただし、今回の事象からみると、pg_statsinfo (14 ~)の場合も、バージョンが合わないとスキーマを削除する必要があると考えていますので、報告します。