postgresql服务没有在RHEL 7上运行

时间:2016-07-25 09:22:21

标签: linux postgresql systemd postgresql-8.4 rhel7

我们有一个在RHEL6 / 32位和RHEL6 / 64位上运行的应用程序。此应用程序从一开始就使用postgresql 8.4。现在,我们希望在RHEL7 / 64位上为此应用程序提供支持。 RHEL7在其yum列表中附带了默认的postgresql 9.2,这已经安装并且其相关服务也正常运行。但是在RHEL7上安装postgresql 8.4后,服务似乎永远不会运行。请在下面找到日志:

$ awk -v FS='(' '{for (i=2; i<=NF; i++) {r=gensub(/cid:([0-9]+)\)/, "\\1", "g", $i); printf "%c", r+0}}' file
hello

查看journalctl -xe中的日志

[root@linpubn218 postgres]# service postgresql status
postgresql.service - SYSV: PostgreSQL database server.
   Loaded: loaded (/etc/rc.d/init.d/postgresql)
      Active: failed (Result: resources) since Mon 2016-07-25 12:40:28 IST; 2h 0min ago
           Docs: man:systemd-sysv-generator(8)

Jul 25 12:40:26 linpubn218.gl.avaya.com systemd[1]: Starting SYSV: PostgreSQL database server....
Jul 25 12:40:28 linpubn218.gl.avaya.com postgresql[26957]: Starting postgresql service: [  OK  ]
Jul 25 12:40:28 linpubn218.gl.avaya.com systemd[1]: PID file /var/run/postmaster-8.4.pid not readable (yet?) after start.
Jul 25 12:40:28 linpubn218.gl.avaya.com systemd[1]: Failed to start SYSV: PostgreSQL database server..
Jul 25 12:40:28 linpubn218.gl.avaya.com systemd[1]: Unit postgresql.service entered failed state.
Jul 25 12:40:28 linpubn218.gl.avaya.com systemd[1]: postgresql.service failed.
Jul 25 14:33:45 linpubn218.gl.avaya.com systemd[1]: Unit postgresql.service cannot be reloaded because it is inactive.
Jul 25 14:33:45 linpubn218.gl.avaya.com systemd[1]: Unit postgresql.service cannot be reloaded because it is inactive.

可以在RHEL7上安装postgresql 8.4,这是一个基于systemd的操作系统吗?如果是,那么我应该怎么做才能消除上述错误?

2 个答案:

答案 0 :(得分:1)

我注意到在/etc/init.d/postgresql-8.4中有一个声明的变量:

pidfile="/var/run/postmaster-${PGMAJORVERSION}.${PGPORT}.pid"

但在systemctl中,PIDfile不一样:

# systemctl show postgresql-8.4.service -p PIDFile PIDFile=/var/run/postmaster-8.4.pid

因此,要解决问题,请修改/etc/init.d/postgresql-8.4并替换

pidfile="/var/run/postmaster-${PGMAJORVERSION}.${PGPORT}.pid"

pidfile="/var/run/postmaster-${PGMAJORVERSION}.pid"

然后重新加载systemctl

# systemctl daemon-reload
#/etc/init.d/postgresql-8.4 start
Starting postgresql-8.4 (via systemctl):                   [  OK  ]

答案 1 :(得分:0)

通常权限导致此类错误

su - postgres

之后:

chmod 700 -R <data_directory>

你也应该检查SELinux。