Сервер postgres не запускается, не выдает журнал, как устранить неполадки?

33

Я запускаю экземпляр postgres 9.3 на сервере Ubuntu 12.04:

~# service postgresql start 

 * The PostgreSQL server failed to start. Please check the log output.
                                                                     [fail]

запуск завершается неудачно, но он не оставляет журнала, этот файл пуст:

tail /var/log/postgresql/postgresql-9.3-main.log 

и нет других файлов в этом каталоге: / var / log / postgresql /

Каков наилучший способ устранить это?

Макс Л.
источник
это новая установка pg или вы только что сделали обновление? убедитесь, что у пользователя postgres есть права на файл конфигурации pg и файл журнала
LinuxDevOps
3
Попробуйте запустить postgres так же, как это делает ваш скрипт (обычно su - postgres; /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/dataи посмотрите, что он вам дает. Возможно, вам придется изменить имя пользователя и пути в зависимости от ваших настроек.
Дженни Д. говорит: «Восстановите Monica
В дополнение к тому, что сказал @JennyD, я бы добавил -d 3к postgresкоманде. Это позволит более расширенные выходные данные отладки, записанные в журнал. Вы можете уменьшить выход отладки, изменив его на 1 или 2, или увеличить его, изменив его на 4 или 5. Кроме того, каков выход which pgsql?
Зимхан
Как PostgreSQL был установлен на сервере и откуда? Есть ли что-нибудь в системных журналах, например / var / log / syslog, / var / log / messages и т. Д.?
Крейг Рингер,
6
Я не понимаю, почему этот вопрос был закрыт.
Геттли

Ответы:

53

Попробуйте запустить его вручную с включенной отладкой. Это заставит его работать на переднем плане и печатать любые сообщения об ошибках к стандартной ошибке, также увеличивая детализацию.

Я считаю, что это будет правильная командная строка для PostgreSQL 9.3 в Ubuntu, но для этого может потребоваться небольшая настройка (примечание: строка разбита для удобства чтения; при желании вы можете объединить ее в одну строку (без обратной косой черты)):

/usr/lib/postgresql/9.3/bin/postgres -d 3 -D /var/lib/postgresql/9.3/main \
   -c config_file=/etc/postgresql/9.3/main/postgresql.conf

Начало - это местоположение postgresдвоичного файла, затем мы включаем отладку и устанавливаем его на уровень 3 (вы можете настроить его вверх или вниз, чтобы увеличить или уменьшить детализацию). Далее мы указываем каталог данных и файл конфигурации для начала. Это должны быть настройки по умолчанию для Ubuntu Server 12.04, я думаю.

Надеюсь, это даст вам достаточно информации, чтобы определить, где проблема.

Кристофер Кашелл
источник
1
запуск его вручную работает для меня, но использование службы по-прежнему не работает. я изменил каталог данных по умолчанию, есть ли что-то, что мне нужно обновить, чтобы заставить сервисную команду снова работать для запуска postgres?
Крисмаркс
1
@chrismarx - serviceкоманда представляет собой просто удобную оболочку вокруг /etc/init.d/скрипта, которая фактически запускает и останавливает процесс. Вам нужно будет посмотреть на этот скрипт, чтобы увидеть, что он делает по-другому, чем когда вы запускаете его вручную. Выполнение чего-то подобного bash -x /etc/init.d/postgresql startможет быть хорошим местом для начала вашего исследования.
Кристофер Кашелл
3
спасибо, я разобрался, возникли проблемы с правами доступа к каталогу данных, и похоже, что службу также нужно было запускать с помощью sudo
chrismarx
1
Спасатель. Я не мог найти другого способа объяснить, почему PostgreSQL не запускается, так как он не может получить доступ к своему каталогу данных из-за проблем с разрешениями.
Арон Лоринц
1
для меня это было разрешение конфигов / etc / postgresql /
евгений