本ページは広告が含まれています。気になる広告をクリック頂けますと、サーバ運営費になります(^^
照合順序バージョンの不一致
スタンバイサーバでレプリケーションをしていました。そこで、気になるログを見つけました。
2023-11-01 14:24:53.329 JST [128790] WARNING: データベース"template1"で照合順序バージョンの不一致が起きています
2023-11-01 14:24:53.329 JST [128790] 詳細: データベースは照合順序バージョン2.31で作成されていますが、オペレーティングシステムはバージョン2.36を提供しています。
2023-11-01 14:24:53.329 JST [128790] ヒント: このデータベース内でデフォルトの照合順序を使用している全てのオブジェクトを再構築して、ALTER DATABASE template1 REFRESH COLLATION VERSIONを実行するか、正しいバージョンのライブラリを用いてPostgreSQLをビルドしてください。
データベースは照合順序バージョン2.31
オペレーティングシステムはバージョン2.36
を利用している、不整合が起きてるって事です。
原因
私の環境ではストリーミングレプリケーションを利用し、サーバAからサーバBへストリーミングレプリケーションしていました。このログが出ているのはサーバBです。
サーバA OS バージョン Debian 11.8
サーバB OSバージョンDebian 12.2
とOSのバージョンが違います。
apt-get で取得できるpostgresql を利用しているのですが、このOSバージョンの違いにより、コンパイル時に使われているライブラリが違う事が原因ではないか?ではないかと思っています。
サーバA aptsource のリポジトリを追加してインストールしたpostgresql-15
apt-cache show postgresql-15
Package: postgresql-15
Version: 15.4-2.pgdg110+1
Architecture: amd64
Maintainer: Debian PostgreSQL Maintainers
Installed-Size: 52254
Depends: locales | locales-all, postgresql-client-15, postgresql-common (>= 241~), ssl-cert, tzdata, debconf (>= 0.5) | debconf-2.0, libc6 (>= 2.29), libgcc-s1 (>= 3.0), libgssapi-krb5-2 (>= 1.14+dfsg), libicu67 (>= 67.1-1~), libldap-2.4-2 (>= 2.4.7), libllvm11 (>= 1:9~svn298832-1~), liblz4-1 (>= 0.0~r130), libpam0g (>= 0.99.7.1), libpq5 (>= 14~beta2), libselinux1 (>= 3.1~), libssl1.1 (>= 1.1.1), libstdc++6 (>= 5.2), libsystemd0, libuuid1 (>= 2.16), libxml2 (>= 2.7.4), libxslt1.1 (>= 1.1.25), libzstd1 (>= 1.4.0), zlib1g (>= 1:1.1.4)
サーバB そのままインストールしたpostgresql
apt-cache show postgresql-15
Package: postgresql-15
Version: 15.3-0+deb12u1
Installed-Size: 51653
Maintainer: Debian PostgreSQL Maintainers <team+postgresql@tracker.debian.org>
Architecture: amd64
Provides: postgresql-15-jit-llvm (= 14), postgresql-contrib-15
Depends: locales | locales-all, postgresql-client-15, postgresql-common (>= 241~), ssl-cert, tzdata, debconf (>= 0.5) | debconf-2.0, libc6 (>= 2.34), libgcc-s1 (>= 3.0), libgssapi-krb5-2 (>= 1.14+dfsg), libicu72 (>= 72.1~rc-1~), libldap-2.5-0 (>= 2.5.4), libllvm14, liblz4-1 (>= 0.0~r130), libpam0g (>= 0.99.7.1), libpq5 (>= 14~beta2), libselinux1 (>= 3.1~), libssl3 (>= 3.0.0), libstdc++6 (>= 5.2), libsystemd0, libuuid1 (>= 2.16), libxml2 (>= 2.7.4), libxslt1.1 (>= 1.1.25), libzstd1 (>= 1.5.2), zlib1g (>= 1:1.1.4)
libc6のバージョンが違うからか、その他いろいろありますね。
解消方法
解消方法
以下のSQLをDBごとに実行する
ALTER DATABASE DB名 REFRESH COLLATION VERSION
メッセージ
NOTICE: バージョン2.31から2.36への変更
ALTER DATABASE
クエリが 56 ミリ秒 で成功しました。
起動時に出ていたWARNING も表示されなくなりました。