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

时间:2017-03-22 10:39:59

标签: linux database postgresql instances

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

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

如果没有,那么获得该列表的最佳方法是什么。任何提示,解决方案和想法都可以帮助我解决这个问题。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在PostgreSQL中,服务器进程提供数据库集群,它实际驻留在数据目录中。

PostgreSQL集群包含多个数据库,所有这些数据库都在服务器进程关闭时关闭。

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

  1. 如何找出计算机上的数据库群集,无论它们是否已启动?

  2. 如果群集关闭,如何找出群集中的所有数据库?

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

    你可以用

    得到近似值
    find / -name PG_VERSION
    

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

    第二个问题更难。

    要获得数字ID列表,您必须知道所有表空间目录。默认表空间中的那些是数据目录的base子目录中的子目录的名称。

    为了获取数据库的名称,您必须启动PostgreSQL服务器,因为非常很难找到属于{{ 1}}并解析它。