我们有一个在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的操作系统吗?如果是,那么我应该怎么做才能消除上述错误?
答案 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。