Вопросы: Не запускается PostgreSQL в Linux

Материал из Юпитер-8

Запуск PostgreSQL в ручную

При установке PostgreSQL на ОС Linux: Debian, Ubuntu, Эльбрус, CentOS и ряде других, при запуске сервиса PostgreSQL ОС может сообщить об отсутствии служебной БД(кластера), по указанному пути. Это означает, что кластер БД не инициализинован. Для инициализации кластера необходимо выполнить следующие команды:
1. Проверить остановлен ли сервис PostgreSQL:
sudo /etc/init.d/postgresql status или
sudo service postgresql status или
sudo systemctl postgresql status

  Вы должны получить ответ системы, о том, что сервис не активен.

2. Инициализация кластера PostgreSQL должна производиться от имени пользователя, который в последствии будет считаться администратором БД. По умолчанию это пользователь - postgres

  Поэтому выполняем команду от имени этого пользователя:
  sudo -u postgres /usr/lib/postgresql/<версия PostgreSQL>/bin/initdb -D /var/lib/postgresql/<версия PostgreSQL>/main или
sudo -u postgres /usr/lib/postgresql/<версия PostgreSQL>/bin/initdb -D /var/lib/postgresql/<версия PostgreSQL>/data
Путь к БД, требуемый по умолчанию можно увидеть в сообщении об ошибке при старте сервиса PostgresSQL. Если есть необходимость в нестандартном месте расположения БД, то него необходимо указать при инициализации кластера.

3. Если используется нестандартное расположение БД, тогда после создания кластера и до запуска сервиса PosqtgreSQL необходимо внести изменения в файл postgresql.conf

data_directory = '<полный путь к БД из строки инициализации>'
hba_file = '<полный путь к файлам конфигурации>/pg_hba.conf'
ident_file = '<полный путь к файлам конфигурации>/pg_ident.conf'
external_pid_file = '/var/run/postgresql/pg-main.pid'

  Файлы конфигурации могут располагаться либо в каталоге /etc/postgresql/<версия postgresql>/main, либо 
  в каталоге, куда сгенерирована БД кластера, например, /var/lib/postgresql/<версия postgresql>/main, либо /var/lib/postgresql/<версия postgresql>/data, либо указанный путь.

4. После внесенных изменений необходимо запустить сервис:
sudo /etc/init.d/postgresql start или
sudo service postgresql start или
sudo systemctl postgresql start

  Проверяем работу postgresql : 

psql -U postgres -h localhost

  Если будет запрос пароля, тогда необходимо ввести пароль от пользователя postgres(по умолчанию - postgres)
  в командной строке сервиса управления БД набрать: \l. При этом получим список баз данных.
  Для выхода нужно набрать: \q.

5. Для проверки автостарта сервиса postgresql необходимо перезагрузить компьютер.

  Проверяем, узнав статус по командам, указанным п п.1.
  Если сервис не активен, тогда надо выполнить команду, позволяющую запускать postgresql при старте ОС
  В Debian и ОС, созданных на его основе: systemctl enable postgresql
  В CentOS и, созданных на основе RedHat: chkconfig postgresql on


В начало статьи

Автоматизация проверки запуска PostgreSQL

Можно попробовать упростить проверку запуска PostgreSQL при запуске системы после сбоя по электропитанию, для этого необходимо, чтобы при загрузке ОС запускался скрипт проверяющий работу PostgreSQL перед стартом КРОС. Для этого необходимо выполнить следующие действия:

1. Запустить "Terminal Fly"
2. Войти в среду суперпользователя: sudo su
3. Скачать скрипт для проверки: wget -P /usr/bin/ https://srv2.jupiter8.ru/soft/postgresql/check_postgresql
4. Сделать файл исполняемым: chmod +x /usr/bin/check_postgresql
6. Скачать файл запуска процесса: wget -P /etc/systemd/system/ https://srv2.jupiter8.ru/soft/postgresql/check_postgresql.service
7. Перезагрузить список сервисов: systemctl daemon-reload
8. Разрешить запуск сервиса при старте системы: systemctl enable check_postgresql

Так же, для создания отдельного сервиса smpo-server и сервиса проверки запуска PostgrSQL, можно воспользоваться скриптом. Его следует запустить в "Terminal Fly". При исполнении команд работа сервера КРОС будет временно приостановлена.

!!!ВНИМАНИЕ!!!
В случае, когда для проверки запуска PostgreSQL, был использован наш скрипт, в дальнейшем команда start/stop/restart для smpo-server будет иметь вид:

service smpo-server start/stop/restart


В начало статьи