sudo /etc/init.d/postgresql restart (如何选择哪个安装?)

sudo /etc/init.d/postgresql restart (如何选择哪个安装?)

我有两个 postgresql 安装:

$ sudo /etc/init.d/postgresql status
9.1/main (port 5432): online
9.2/main (port 5433): online

我习惯于重新启动 postgres 数据库,执行以下操作:

$ sudo /etc/init.d/postgresql restart

...但是现在有两个了,该如何选择重启哪一个呢?

更新:根据我收到的答案米卡·约德我做了一个:

/usr/lib/postgresql/9.2/bin/pg_ctl -D /var/lib/postgresql/9.2/main restart

遇到“无法打开 PID 文件 /var/lib/postgresql/9.2/main/main/postmaster.pid 权限被拒绝”。当我尝试运行控制寄存器在一个sudo-i会议期间我遇到了:

pg_ctl: cannot be run as root
Please log in (using, e.g., "su") as the (unprivileged) user that will
own the server process.

我该如何运行控制寄存器程序?另外,我不明白为什么我必须指示重新启动的数据文件。进程不知道它正在使用哪个数据文件吗?

更新2 最后我放弃了控制寄存器并做了:

sudo /etc/init.d/postgresql restart 9.2

..按照接受的答案。

答案1

如果您使用的是 debian,您可以告诉 init 脚本您想要管理哪个版本:

pg01:~# /etc/init.d/postgresql       
Usage: /etc/init.d/postgresql {start|stop|restart|reload|force-reload|status} [version ..]
pg01:~#

答案2

首先,您是有意同时运行两个版本,还是只是从不同的软件包安装了 9.2 版本而没有删除 9.1 版本?(Postgres 软件包现在通常都是这样设置的。)如果您已经迁移,那么应该删除 9.1 版本。

如果您需要两者,那么每个都应该有自己的 pg_ctl 可执行文件,它可以执行与普通 initscript 相同的操作。以“postgres”用户身份运行它。请参阅 .../path/bin/pg_ctl --help

答案3

您可能正在运行两个 postgresql 实例,并使用存储在两个地方的两个不同的配置文件,该文件名为 postgresql.conf。

您应该检查/etc/sysconfig/pgsql/postgresql配置文件以验证它正在使用哪个 pgsql /etc/init.d/postgresql。它必须具有将存储 postgresql.conf 文件的 pgsql 目录的位置。在此 conf 文件中,将有该特定 pgsql 的端口号。

相关内容