В отличии от mysql, где переход на следующую мажорную версию осуществляется обновлением бинарников и схемы БД, апгрейд PostgreSQL проходит несколько иначе. Рассмотрим на конкретном примере
Имеется кластер 1С и клиент-серверная программа подачи отчетности МЕДОК, данные которых хранятся в PostgreSQL. Текущая версия 14.7, перейти нужно на 15.2. ОС Windows 2016 standart
Установка новой версии PostgreSQL
Текущий инстанс установлен по пути C:\Program Files\PostgreSQL 1C\14 и работает с портом 5432. Новый устанавливаем в папку C:\Program Files\PostgreSQL 1C\15 и работать он будет с портом 5433. Скачиваем дистрибутив и запускаем инсталятор

Пароль пользователя postgres оставляем тот же, что и для версии 14. Потом удобнее будет мигрировать

В ходе установки инсталятор предложит свой postgres.conf в зависимости от железа, либо конфиг по-умолчанию. Но это не важно, потому что postgres.conf от 14-й версии скорее всего подойдет
![]()
По окончании инсталяции имеем два рабочих инстанса PostgreSQL, 14-й на порту 5432 и 15-й на порту 5433
Миграция
Нет потребности сливать все базы в дамп и потом из него накатывать. Будем заливать сразу, используя pg_dumpall. Предварительно останавливаем службы 1C:Enterprise 8.3 Server Agent и ZvitGrp, которые работают с PostgreSQL. Запускаем cmd.exe и выполняем следующее:
cd C:\Program Files\PostgreSQL 1C\15\bin chcp 1251 set PGPASSWORD=********* (пароль суперпользователя postgres) pg_dumpall -U postgres -p 5432 | psql -U postgres -p 5433
Если не задать в переменной PGPASSWORD пароль суперпользователя, то при миграции каждой следующей базы придется вводить пароль вручную, что на большом количестве баз несколько напряжно
Либо при помощи pg_upgrade
C:\Program Files\PostgreSQL 1C\15\bin\pg_upgrade -b C:\Program Files\PostgreSQL 1C\14\bin\ -B C:\Program Files\PostgreSQL 1C\15\bin\ -d C:\Program Files\PostgreSQL 1C\14\data\ -D C:\Program Files\PostgreSQL 1C\15\data\ -o ' -c config_file=C:\Program Files\PostgreSQL 1C\14\data\postgresql.conf' -O ' -c config_file=C:\Program Files\PostgreSQL 1C\15\data\postgresql.conf
Ждем. В зависимости от размера время может быть разным. Все базы (размер дампа 56Гб, сделал за день до миграции) «зашли» за 70 минут
Переключение
По окончании, останавливаем все службы postgresql. Для версии 14 Startup Type устанавливаем в состояние Disabled. postgres.conf и pg_hba.conf (возможно еще какой-то .conf) копируем из C:\Program Files\PostgreSQL 1C\14\data\ в C:\Program Files\PostgreSQL 1C\15\data\ и запускаем службу postgresql-1c-15, 1С и МЕДКА. Проверяем
P.S.
Не все опции из postgres.conf 14-й версии верны для 15-ой. Пришлось удалить stats_temp_directory из-за которой 15-я версия не запускалась

Системный администратор с 2000 года
Участник Freelancehunt, Хабр Q&A
Кейсы