![Ubuntu 升级后 Postgres 的多个实例](https://linux22.com/image/565265/Ubuntu%20%E5%8D%87%E7%BA%A7%E5%90%8E%20Postgres%20%E7%9A%84%E5%A4%9A%E4%B8%AA%E5%AE%9E%E4%BE%8B.png)
刚刚将 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