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

postgresql-9.5 в CentOS 7 не запускается при загрузке (PGDATA в точке монтирования)

Я пытаюсь запустить postgresql-9.5 при загрузке на CentOS 7.

Я выполнил шаги установки и запуска здесь https://wiki.postgresql.org/wiki/YUM_Installation И попробовали дополнительное устранение неполадок из этого вопроса здесь https://stackoverflow.com/questions/35492893/unable-to-start-postgresql-9-5-on-centos-7

Может быть важно, что я использую специальный каталог PGDATA, который является точкой монтирования. (/mnt/data)

База данных была инициализирована, указывая на /mnt/data каталог.

su postgres -c "/usr/pgsql-9.5/bin/pg_ctl initdb -D /mnt/data"

Я внес необходимые изменения в /usr/lib/systemd/system/postgresql-9.5.service файл, чтобы указать на /mnt/data каталог.

Служба была включена и успешно запущена.

systemctl enable postgresql-9.5

systemctl start postgresql-9.5

После перезагрузки systemctl status postgresql-9.5 показывает следующее:

● postgresql-9.5.service - PostgreSQL 9.5 database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql-9.5.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Wed 2016-04-06 00:53:02 EDT; 4min 36s ago
  Process: 9911 ExecStartPre=/usr/pgsql-9.5/bin/postgresql95-check-db-dir ${PGDATA} (code=exited, status=1/FAILURE)

Apr 06 00:53:02 pgdev-fl1 systemd[1]: Starting PostgreSQL 9.5 database server...
Apr 06 00:53:02 pgdev-fl1 systemd[1]: postgresql-9.5.service: control process exited, code=exited status=1
Apr 06 00:53:02 pgdev-fl1 systemd[1]: Failed to start PostgreSQL 9.5 database server.
Apr 06 00:53:02 pgdev-fl1 systemd[1]: Unit postgresql-9.5.service entered failed state.
Apr 06 00:53:02 pgdev-fl1 systemd[1]: postgresql-9.5.service failed.

Однако я могу сразу бежать systemctl start postgresql-9.5 и он загружается нормально, используя /mnt/data каталог.

Думая, что это может быть проблема времени, и он пытается запустить службу до того, как точка монтирования существует, я включил Requires=mnt-data.mount в [Unit] раздел /usr/lib/systemd/system/postgresql-9.5.service, и повторно включил службу после systemctl daemon-reload.

Тем не менее, он выдает то же сообщение при загрузке.

Бег /usr/pgsql-9.5/bin/postgresql95-check-db-dir ${PGDATA} не генерирует никаких результатов для меня, поэтому я не понимаю, где продолжить устранение этой проблемы.

Любое руководство приветствуется!

Обновление - 06.04.16

После проверки journalctl очевидно, что он пытается загрузить службу postgresql-9.5 до того, как том iSCSI будет смонтирован, даже если Requires директива была включена.

После перечитывания https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files мне стало очевидно, что Requires не ведет себя так, как я думал.

Изменение директивы на After решил проблему и заставил службу postgresql-9.5 ждать, пока не станет доступна точка монтирования.

Requires без After попытается загрузить их одновременно.

Ты можешь использовать Requires с участием After чтобы подразумевать отношения зависимости.