С этим вопросом впервые сталкиваешься, когда пытаешь обновить версию кластера PostgreSQL. Например с 11 версии до 14.
Запуская команду «/usr/lib/postgresql/14/bin/pg_upgrade» можно столкнуться с проблемой:
Видимо, запущен процесс postmaster, обслуживающий старый кластер.
Остановите его и попробуйте ещё раз.
Ошибка, выполняется выход
Скриншот:
Всё очевидно. Даже на русском языке подаётся ответ. Нужно как-то остановить процесс postmaster.
Решение
Нам нужно воспользоваться серверным приложением pg_ctl, которое поставляется вместе с PostgreSQL.
Сперва лучше подстраховаться и проверить какая из версий является активной. От этого зависит порт, на котором работает текущая активная версия.
Код вызова:
/usr/lib/postgresql/11/bin/pg_ctl status --pgdata=/var/lib/postgresql/11/main
/usr/lib/postgresql/14/bin/pg_ctl status --pgdata=/var/lib/postgresql/14/main
Мы точно убедились в правдивости сообщения из pg_upgrade
Теперь можно делать остановку процесса 11 версии:
/usr/lib/postgresql/11/bin/pg_ctl stop --pgdata=/var/lib/postgresql/11/main --mode=smart
Имейте ввиду, что в smart режиме остановки, сервер может не остановиться. В таком случае нужно использовать режим fast.
/usr/lib/postgresql/11/bin/pg_ctl stop --pgdata=/var/lib/postgresql/11/main --mode=fast
Процесс postmaster остановлен. Можно приступать к обновлению версии PostgreSQL.
Информационные ссылки
Официальный сайт WEB-оболочки pgAdmin — https://www.pgadmin.org
Официальный сайт СУБД PostgreSQL — https://www.postgresql.org
Серверное приложение pg_ctl — https://postgrespro.ru/docs/postgresql/14/app-pg-ctl