Skip to content

ERROR: pg_statsinfo: incompatible statsrepo schema: version mismatchの対応方法について #5

@MA0831

Description

@MA0831

環境:

OS:RHEL 8.6
ソフトウェア:
PostgreSQL 14.4
パッケージ:
pg_statinfo14.0

当方環境でpg_statinfo14.0 -> 14.2のアップグレードを下記の手順で行いました。

  1. postgresql.conf の shared_preload_libraries から pg_statsinfo を取り除き、全ての pg_statsinfo.* パラメータを削除(コメントアウト)した後に、PostgreSQL を再起動します。

  2. rootユーザーでパッケージを更新します。
    rpm -Uvh pg_statsinfo-14.2-1.rhel8.x86_64.rpm

  3. 設定ファイルに 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 スキーマは設定リロード時に自動的に登録されます)

https://github.com/ossc-db/pg_statsinfo/blob/main/doc/pg_statsinfo-ja.md#%E3%83%95%E3%82%A9%E3%83%BC%E3%83%AB[…]%E3%82%AF%E3%83%A2%E3%83%BC%E3%83%89

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 ~)の場合も、バージョンが合わないとスキーマを削除する必要があると考えていますので、報告します。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions