У меня две установки 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.