@igortru

Как исправить несоответствие версии сортировки?

Запустил реплику для Postgres, на реплике в журнале ошибка
2024-01-16 05:44:06.503 UTC [3187414] WARNING:  database "postgres" has a collation version mismatch
2024-01-16 05:44:06.503 UTC [3187414] DETAIL:  The database was created using collation version 2.31, but the operating system provides version 2.36.
2024-01-16 05:44:06.503 UTC [3187414] HINT:  Rebuild all objects in this database that use the default collation and run ALTER DATABASE postgres REFRESH COLLATION VERSION, or build PostgreSQL with the
 right library version.

Выполнено на мастере:
REINDEX DATABASE postgres; ALTER DATABASE postgres REFRESH COLLATION VERSION;
но выходе получаем:
REINDEX
NOTICE:  version has not changed
ALTER DATABASE

Версии postgres на серверах одинаковые: 15.5
  • Вопрос задан
  • 345 просмотров
Пригласить эксперта
Ответы на вопрос 2
Melkij
@Melkij
PostgreSQL DBA
Специальный варнинг, очень явно подсказывающий, что держать физическую репликацию на разных ОС - идея плохая. Причина в время от времени происходящих изменении правил сортировки строк: https://wiki.postgresql.org/wiki/Locale_data_changes
СУБД это задевает в части индексов, если на мастере было '1-1' < '11', то запись запишется в одно место btree, а если на реплике оператор сравнения говорит что '1-1' > '11', то выполнение запроса смотрит в логичное для этого результата место индекса и вообще не находит данные. Потому что мастер их записал располагая другим ответом функции сравнения строк.
Так и проявляется IRL, поиск по индексу говорит что данных нет, но если форсировать seqscan - то данные находятся.

Варнинг на мой взгляд действительно избыточно говорливый, сыпется при каждом подключении к базе, но какой есть. Обновляйте ОС, в общем, на одинаковую в рамках всего кластера. Затем перестраивайте пострадавшие индексы.
Ответ написан
Комментировать
AshBlade
@AshBlade
Просто хочу быть счастливым
Вместо REINDEX попробуй удалить, а потом восстановить.
DROP INDEX ...
ALTER DATABASE
CREATE INDEX ...


UPD: проблема "collation version" возможно возникла из-за разных версий ОС
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы