我有两个 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 的端口号。