服务器上运行的 Postgres 实例列表

问题描述 投票:0回答:1

我在我的组织中担任 Postgres DBA。我们目前正在 SUSE Linux 服务器上开发 Postgres 9.5。我想要一个特定的解决方案。我们有多台 SUSE Linux 服务器,每台服务器可以托管一个或多个 Postgres 数据库。我的要求是我需要找到特定服务器上所有可用数据库的列表,而不管数据库是启动并运行还是关闭。

Postgres 是否有任何文件或任何位置记录在服务器上创建的所有数据库。有没有一种方法可以在不连接到 Postgres 实例且不运行任何 PSQL 命令的情况下获取所需的详细信息?

如果不是,获取列表的最佳方式是什么。任何提示、解决方案和想法都会帮助我解决这个问题。

非常感谢您的提前帮助。

linux database postgresql instances
1个回答
0
投票

在 PostgreSQL 中,一个服务器进程服务于一个数据库集群,它物理上位于一个数据目录

一个PostgreSQL集群包含若干个数据库,所有的数据库都在服务器进程关闭时关闭

所以你的问题可以分为两部分:

  1. 如何找出一台机器上有哪些数据库集群,不管它们是否启动?

  2. 如何在集群关闭的情况下找出集群内的所有数据库?

第一个问题没有通用的答案,因为数据目录原则上可以无处不在并且可以属于任何用户。

你可以得到一个近似值

find / -name PG_VERSION

但最好找到适合您设置的特殊解决方案(您没有告诉我们)。

第二题更难

即使要获得数字 ID 列表,您也必须知道所有表空间目录。 default tablespace里面的就是数据目录下

base
子目录下的子目录名

为了获取数据库的名称,您必须启动 PostgreSQL 服务器,因为非常很难找到属于

pg_database
的文件并解析它。

© www.soinside.com 2019 - 2024. All rights reserved.