PostgreSQL | Как остановить процесс postmaster?

PostgreSQL | Как остановить процесс postmaster?

С этим вопросом впервые сталкиваешься, когда пытаешь обновить версию кластера PostgreSQL. Например с 11 версии до 14.

Запуская команду «/usr/lib/postgresql/14/bin/pg_upgrade» можно столкнуться с проблемой:

Видимо, запущен процесс postmaster, обслуживающий старый кластер.
Остановите его и попробуйте ещё раз.
Ошибка, выполняется выход

Скриншот:

Видимо, запущен процесс postmaster, обслуживающий старый кластер - PostgreSQL
Видимо, запущен процесс postmaster, обслуживающий старый кластер — PostgreSQL

Всё очевидно. Даже на русском языке подаётся ответ. Нужно как-то остановить процесс postmaster.

 

Решение

Нам нужно воспользоваться серверным приложением pg_ctl, которое поставляется вместе с PostgreSQL.

Сперва лучше подстраховаться и проверить какая из версий является активной. От этого зависит порт, на котором работает текущая активная версия.

Код вызова:

/usr/lib/postgresql/11/bin/pg_ctl status --pgdata=/var/lib/postgresql/11/main
Статус работающего процесса 11 версии
Статус работающего процесса 11 версии
/usr/lib/postgresql/14/bin/pg_ctl status --pgdata=/var/lib/postgresql/14/main
Статус не работающего процесса 14 версии
Статус не работающего процесса 14 версии

Мы точно убедились в правдивости сообщения из 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 в 11 версии PostgreSQL
Остановили процесс postmaster в 11 версии PostgreSQL

Процесс postmaster остановлен. Можно приступать к обновлению версии PostgreSQL.

 

Информационные ссылки

Официальный сайт WEB-оболочки pgAdminhttps://www.pgadmin.org

Официальный сайт СУБД PostgreSQLhttps://www.postgresql.org

Серверное приложение pg_ctl https://postgrespro.ru/docs/postgresql/14/app-pg-ctl