Обязательные действия при обновлении операционной системы¶
Обновление операционной системы сервера требует реиндексации баз данных PostgreSQL.
Причина: из-за особенностей работы PostgreSQL при обновлении ОС меняется версия системной библиотеки glibc, отвечающая за настройки сортировки Collation в PostgreSQL. Это может привести к появлению дубликатов значений на уникальных индексах. Дубли нарушают целостность данных и могут вызвать ошибки в работе сервера — например, зависание спуллера из-за накопления сообщений о дублях в логах.
Решение: при обновлении ОС обновите Collation для PostgreSQL 15 и проведите реиндексацию базы данных для всех версий PostgreSQL.
Порядок действий про обновлении ОС:
Остановите Staffcop.
sudo staffcop stop sudo systemctl disable staffcop
Обновите операционную систему в соответствии с вашим процессом.
Только для PostgreSQL 15: обновите настройки сортировки Collation.
echo "ALTER DATABASE postgres REFRESH COLLATION VERSION;" | sudo -u postgres psql -d postgres echo "ALTER DATABASE template1 REFRESH COLLATION VERSION;" | sudo -u postgres psql -d template1 echo "ALTER DATABASE staffcop REFRESH COLLATION VERSION;" | sudo -u postgres psql -d staffcop
Для всех версий PostgreSQL: реиндексируйте БД.
echo "REINDEX (VERBOSE) DATABASE postgres" | sudo -u postgres psql -d postgres echo "REINDEX (VERBOSE) DATABASE template1" | sudo -u postgres psql -d template1 echo "REINDEX (VERBOSE) DATABASE staffcop" | sudo -u postgres psql -d staffcop
Запустите Staffcop.
sudo systemctl enable staffcop sudo staffcop start
Готово!