Обновление версии PostgreSQL для GNU/Linux¶
Данная страница является дополнением к инструкции по установке на GNU/Linux и поможет обновить используемую в сканере систему управления базами данных PostgreSQL до версии 16, содержащей необходимое для корректной работы сервиса расширение TimescaleDB. Если версия PostgreSQL соответствует требуемой, необходимо только установить расширение, если оно не установлено.
Список затрагиваемых версий¶
Инструкцию необходимо проделать при обновлении сканера с версии v25.9 и старше на версию v25.10 и новее.
Миграция¶
Примечание
- В предлагаемой инструкции миграция осуществляется с помощью встроенной в PostgresQL команды
pg_dump. Допускаются другие способы обновления, не указанные в инструкции. - Все команды в инструкции запускаются пользователем с ролью «администратор».
- При установке на Astra Linux команды
pg_dump,dropdb,psqlдолжен выполнять пользователь с рольюpostgres. Для этого используется префикс видаsudo -u postgres.
-
Назначьте директорию для сохранения резервных копий
-
Создайте копию базы данных
solidpoint_backend. -
Создайте копию базы данных
fuchsia. -
Удалите базу данных
solidpoint_backend. -
Удалите базу данных
fuchsia. -
Обновите версию PostgreSQL до необходимой.
-
Остановите старый кластер.
-
Обновите пакеты.
-
Определите старую и новую версию PostgreSQL, а также имя кластера.
-
Используйте утилиту
pg_upgrade. -
Запустите новый кластер.
-
Удалите старый кластер.
-
-
Заново создайте удалённые базы данных.
su postgres -c psql > CREATE DATABASE solidpoint_backend; > CREATE USER backend WITH PASSWORD '${POSTGRESQL_PASSWORD}'; > GRANT ALL PRIVILEGES ON DATABASE solidpoint_backend TO backend; > \c solidpoint_backend; > GRANT ALL ON SCHEMA public TO backend; > CREATE DATABASE fuchsia; > CREATE USER fuchsia WITH PASSWORD '${POSTGRESQL_PASSWORD}'; > GRANT ALL PRIVILEGES ON DATABASE fuchsia TO fuchsia; > \c fuchsia; > GRANT ALL ON SCHEMA public TO fuchsia; > quit -
Импортируйте копию базы данных
solidpoint_backend. -
Импортируйте копию базы данных
fuchsia. -
Перезапустите PostgreSQL.
-
Назначьте директорию для сохранения резервных копий
-
Создайте копию базы данных
solidpoint_backend. -
Создайте копию базы данных
fuchsia. -
Удалите базу данных
solidpoint_backend. -
Удалите базу данных
fuchsia. -
Обновите версию PostgreSQL до необходимой.
-
Остановите старый кластер.
-
Обновите пакеты.
-
Определите старую и новую версию PostgreSQL, а также имя кластера.
-
Используйте утилиту
pg_upgrade. -
Закомментируйте неподдерживаемые конфигурационные параметры.
-
Запустите новый кластер.
-
Удалите старый кластер.
-
-
Заново создайте удалённые базы данных.
su postgres -c psql > CREATE DATABASE solidpoint_backend; > CREATE USER backend WITH PASSWORD '${POSTGRESQL_PASSWORD}'; > GRANT ALL PRIVILEGES ON DATABASE solidpoint_backend TO backend; > \c solidpoint_backend; > GRANT ALL ON SCHEMA public TO backend; > CREATE DATABASE fuchsia; > CREATE USER fuchsia WITH PASSWORD '${POSTGRESQL_PASSWORD}'; > GRANT ALL PRIVILEGES ON DATABASE fuchsia TO fuchsia; > \c fuchsia; > GRANT ALL ON SCHEMA public TO fuchsia; > quit -
Импортируйте копию базы данных
solidpoint_backend. -
Импортируйте копию базы данных
fuchsia. -
При установке на Astra Linux убедитесь, что в файле
/etc/postgresql/16/main/postgresql.confв качестве номера порта указано значение5432(если это не так, установите значение5432). -
Перезапустите PostgreSQL.
Известные проблемы¶
Ошибка команды pg_upgradecluster, связанная c локалями¶
Пример:
root@astra:~# pg_upgradecluster 15 main
Upgrading cluster 15/main to 16/main ...
Stopping old cluster...
Restarting old cluster with restricted connections...
Notice: extra pg_ctl/postgres options given, bypassing systemctl for start operation
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_ADDRESS = "en_GB.UTF-8",
LC_NAME = "en_GB.UTF-8",
LC_MONETARY = "en_GB.UTF-8",
LC_PAPER = "en_GB.UTF-8",
LC_IDENTIFICATION = "en_GB.UTF-8",
LC_TELEPHONE = "en_GB.UTF-8",
LC_MEASUREMENT = "en_GB.UTF-8",
LC_TIME = "en_GB.UTF-8",
LC_NUMERIC = "en_GB.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_US.UTF-8").
Error: The locale requested by the environment is invalid:
LANG: en_US.UTF-8
LC_ADDRESS: en_GB.UTF-8
LC_IDENTIFICATION: en_GB.UTF-8
LC_MEASUREMENT: en_GB.UTF-8
LC_MONETARY: en_GB.UTF-8
LC_NAME: en_GB.UTF-8
LC_NUMERIC: en_GB.UTF-8
LC_PAPER: en_GB.UTF-8
LC_TELEPHONE: en_GB.UTF-8
LC_TIME: en_GB.UTF-8
Error: Could not create target cluster
Решение:
-
Используйте команды:
-
В открывшемся окне выберите
en_GB.UTF-8 UTF-8, нажав на пробел.
Ошибка команды pg_upgradecluster, связанная c конфигурационными параметрами¶
Пример:
Error: /usr/lib/postgresql/16/bin/pg_ctl /usr/lib/postgresql/16/bin/pg_ctl start -D /var/lib/postgresql/16/main -l /var/log/postgresql/postgresql-16-main.log -s -o -c config_file="/etc/postgresql/16/main/postgresql.conf" -c hba_file=/tmp/pg_hba.JThoYx.conf exited with status 1:
2025-09-06 16:07:18.871 GMT [335627] LOG: unrecognized configuration parameter "ac_enable_maclabels_on_files" in file "/etc/postgresql/16/main/postgresql.conf" line 38
2025-09-06 16:07:18.871 GMT [335627] LOG: unrecognized configuration parameter "ac_ignore_maclabel" in file "/etc/postgresql/16/main/postgresql.conf" line 39
Решение:
-
Используйте команду:
-
Закомментируйте все параметры, начинающиеся на
ac_, используя символ#перед такими параметрами. - Сохранившись, выйдите из файла.
-
Запустите кластер
-
Проверьте состояние кластера