我在 CentOS 6.2 服务器上运行 Postgresql 8.4 作为服务。
我设置
port = 21444
并listen_addresses = '*'
在/var/lib/pgsql/data/postgresql.conf
文件中
我将 5432 改为 21444,postmaster.opts
然后重新启动 postgres,但当我运行netstat -lntp
postgresql 时,它仍然在端口 5432 上运行
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 20276/postmaster
当我重新启动 postgresql 时,我收到写入错误警告/proc/self/oom_adj
,但服务仍然启动。
我读到过在使用虚拟化服务器时可能会出现此错误,但我真的不知道这是否会对 postgresql 监听端口产生影响。
正确的 pgsql 配置文件已加载/var/lib/pgsql/data
:
[root@srv02 ~]# ps -ef | grep postgres
root 1358 22140 0 09:42 pts/0 00:00:00 grep postgres
postgres 9519 1 0 Mar16 ? 00:00:01 /usr/bin/postmaster -p 5432 -D /var/lib/pgsql/data
postgres 9573 9519 0 Mar16 ? 00:00:00 postgres: logger process
postgres 9575 9519 0 Mar16 ? 00:00:05 postgres: writer process
postgres 9576 9519 0 Mar16 ? 00:00:03 postgres: wal writer process
postgres 9577 9519 0 Mar16 ? 00:00:01 postgres: autovacuum launcher process
postgres 9578 9519 0 Mar16 ? 00:00:01 postgres: stats collector process
任何想法?
答案1
当我尝试在 postgresql.conf 中设置端口号时,我遇到了同样的问题,正如许多说明所指出的那样。您的 ps -ef 内容为:
/usr/bin/postmaster -p 5432
这一行表明它从 5432 开始。
它由服务启动脚本运行,在我的情况下(CentOS6.3 + postgresql-9.1)它在这里:
/etc/rc.d/init.d/postgresql-9.1
有一行字:
# Override defaults from /etc/sysconfig/pgsql if file is present
[ -f /etc/sysconfig/pgsql/${NAME} ] && . /etc/sysconfig/pgsql/${NAME}
所以我所做的就是转到 /etc/sysconfig/pgsql,创建一个新文件 postgresql-9.1,在其中添加一行:PGPORT=8100。在上述情况下,您应该添加 PGDATA=。注意,文件名应该与您的服务名称相同,如果您不知道,请使用
chkconfig --list | grep post*
找出答案。
然后通过以下方式重新启动服务器:
sudo service postgresql-9.1 restart.
答案2
您是否正在使用重新开始行动,或者你停止然后服务开始又来了?
我有 Ubuntu,但我通过重新启动设法获得了与您相同的行为,但当我停止并启动 postgresql 时,它会监听新端口。因此,请尝试停止它然后启动它,看看它是否开始监听新端口。
答案3
在/etc/init.d/postgresql-9.3
find中将PGPORT = 5432
其更改为Your Desired Port Number
然后重新启动。它解决了我的问题。