Ubuntu 升级后 Postgres 的多个实例

Ubuntu 升级后 Postgres 的多个实例

刚刚将 Ubuntu 升级到最新版本,但现在我有两个 Postgres 实例。

8.4 和 9.1

问题是我不知道第二个在哪个端口上运行?

我如何检测哪个端口正在运行....

如果我运行 cristi@cristi-hp:/usr/share/postgresql-common$ sudo -u postgres psql psql (8.4.8) 输入“help”获取帮助。

如何使用 psql 9.1?

两者似乎都在运行:cristi@cristi-hp:/usr/share/postgresql-common$ sudo /etc/init.d/postgresql start [sudo] cristi 的密码:* 启动 PostgreSQL 8.4 数据库服务器 [ OK ] * 启动 PostgreSQL 9.1 数据库服务器

谢谢...

答案1

正如您所见,Ubuntu 是基于 Debian 的系统,能够运行多个 Postgres 实例。通常,除非另有配置,否则启动的第一个实例将具有默认的 Postgres 端口,并且每个后续实例将使用下一个更高的端口(如果可用)。这些端口可以在下面的配置文件中定义,/etc/postgresql/<version>/<cluster>/以便在您需要时它们不会更改,但我实际上需要这样做。事实上,粗略地看一下/etc/init.d/postgresql还会向您展示您可以通过设置环境变量/etc/postgresql/<version>/<cluster>/environment

软件包管理器甚至很好地包含/usr/share/doc/postgresql-common/README.Debian.gz了一部分内容,快速解释了如何处理集群管理,包括pg_lsclusters为您提供 Postgres 版本和端口号的命令以及有关每个配置集群的其他详细信息。

要回答有关停止实例的评论中的问题...您可以编辑start.conf下面的文件/etc/postgresql/<version>/<cluster>/并将其从汽车已禁用或者手动的。引用默认start.conf文件本身……

# Automatic startup configuration
# auto: automatically start/stop the cluster in the init script
# manual: do not start/stop in init scripts, but allow manual startup with
#         pg_ctlcluster
# disabled: do not allow manual startup with pg_ctlcluster (this can be easily
#           circumvented and is only meant to be a small protection for
#           accidents).

答案2

如果您只想找到当前正在运行的端口和/或布局,您只需运行“pg_lsclusters”

rtreat@xdw1:~$ pg_lsclusters
Version Cluster   Port Status Owner    Data directory                     Log file
9.0     data1     5432 online postgres /var/lib/postgresql/9.0/data1      /var/log/postgresql/postgresql-9.0-data1.log
9.0     data2     5488 online postgres /var/lib/postgresql/9.0/data2      /var/log/postgresql/postgresql-9.0-data2.log
9.0     data3     5499 online postgres /var/lib/postgresql/9.0/data3      /var/log/postgresql/postgresql-9.0-data3.log
9.0     sanitize1 6544 online postgres /var/lib/postgresql/9.0/sanitize1  /var/log/postgresql/postgresql-9.0-sanitize1.log
9.0     sanitize2 6543 online postgres /var/lib/postgresql/9.0/sanitize2  /var/log/postgresql/postgresql-9.0-sanitize2.log

相关内容