Назад | Перейти на главную страницу

sudo /etc/init.d/postgresql restart (как выбрать установку?)

У меня две установки postgresql:

$ sudo /etc/init.d/postgresql status
9.1/main (port 5432): online
9.2/main (port 5433): online

Я привык перезапускать базу данных postgres, выполнив:

$ sudo /etc/init.d/postgresql restart

... но теперь, когда их два, как выбрать, какой из них перезапустить?

ОБНОВИТЬ: после ответа, который я получил от Мика Йодер Я сделал:

/usr/lib/postgresql/9.2/bin/pg_ctl -D /var/lib/postgresql/9.2/main restart

который был встречен с "не удалось открыть файл PID /var/lib/postgresql/9.2/main/main/postmaster.pid доступ запрещен". Когда я пытался бежать pg_ctl в судо-я сессия меня встретили:

pg_ctl: cannot be run as root
Please log in (using, e.g., "su") as the (unprivileged) user that will
own the server process.

Как мне запустить pg_ctl программа? Также я не понимаю, почему я должен указывать файл данных для перезапуска. Разве процесс не знает, какой файл данных он использует?

ОБНОВЛЕНИЕ 2 Наконец я отказался от pg_ctl и сделал:

sudo /etc/init.d/postgresql restart 9.2

.. согласно принятому ответу.

Если вы используете debian, вы можете указать сценарию инициализации, какими версиями вы хотите управлять:

pg01:~# /etc/init.d/postgresql       
Usage: /etc/init.d/postgresql {start|stop|restart|reload|force-reload|status} [version ..]
pg01:~#

Во-первых, вы намеренно запускаете два рядом друг с другом или вы просто установили 9.2 из другого пакета и не удалили 9.1? (Пакеты Postgres теперь часто настраиваются таким образом.) Если вы выполнили миграцию, то 9.1 следует удалить.

Если вам нужны оба, тогда у каждого должен быть свой исполняемый файл pg_ctl, который может делать то же самое, что и обычный initscript. Запустите его как пользователь postgres. См ... / путь / bin / pg_ctl --help

Вероятно, у вас есть два экземпляра postgresql, запущенных с использованием двух разных файлов конфигурации с именем postgresql.conf, хранящихся в двух местах.

Вы должны проверить /etc/sysconfig/pgsql/postgresql config, чтобы проверить, для какого pgsql он используется /etc/init.d/postgresql. Он должен иметь расположение каталога pgsql, в котором будет храниться файл postgresql.conf. В этом файле conf будет номер порта для этого конкретного pgsql.