我想我安装了多个 postgresql 服务器,如何识别和删除“额外”的服务器?

Gui*_*d33 9 postgresql ubuntu

我的机器上似乎安装了一些 postgresql。我不确定这是否是一个错误,或者 Ubuntu 是否出于某种奇怪的原因复制了目录并将它们保留在其他地方。

我有一个 postgresql 目录 /etc

一进 /usr/lib

和一个 /opt

在这一点上我很困惑。

我如何去删除多余的?。
哪些是他额外的?
我还需要确保我的 rails env 中的“pg” gem 指向正确的 posgresql db 服务器。

关于我的问题的任何想法都会很大。

Phi*_*ing 30

人们对安装的含义可能有些困惑。

  • /etc/postgresql/文件夹是集群的配置文件夹。
  • /var/lib/postgresql/文件夹用于数据。
  • 每个版本的程序二进制文件通常位于单独的文件夹中/usr/lib/postgresql/

我真的不知道,/opt/postgresql因为我没有那个。但/opt用于“可选”二进制文件,因此您的安装可能在此处而不是/usr/lib/postgresql/.

简而言之,我认为您可能只有一个在多个位置包含文件的安装。

如果您想查看已安装的内容,这可能会有所帮助:

postgresql 的结构:

为了让事情更清楚一点,postgres 的结构如下:

  • 版本字面上指的是 postgresql 程序二进制文件的版本。每个安装的版本都可能在该版本下安装了一个集群。如果不是,则该版本实际上处于休眠状态,因为它没有关联的数据或正在运行的服务器。

  • 在每个版本下有许多集群。您可以将集群视为正在运行的 prostgres 服务器(进程)。每个集群都必须有自己的端口/套接字文件供客户端连接。每个集群将由一个版本管理。

  • 每个集群内部将有许多数据库。当客户端连接时,它会选择一个要连接的数据库。它可以在不打开新会话的情况下要求更改它所连接的数据库,但它只能连接到一个。

你安装了什么?

要了解安装了哪些版本,您可以查看dpkgapt。您应该能够使用apt和卸载版本dpkg,但在检查每个版本下的集群之前要非常小心不要这样做。

要找出您拥有哪些集群,请使用命令pg_lsclusters. 当我调用它时,我得到以下信息,你会得到不同的东西:

Version Cluster   Port Status Owner      Data directory                     Log file
9.1     main      5432 online <unknown>  /var/lib/postgres/data/9.1/main    /var/log/postgresql/postgresql-9.1-main.log
Run Code Online (Sandbox Code Playgroud)

请特别注意“状态”列。如果集群不在线,那么它只是磁盘上的数据并且什么都不做。如果它在线,那么它正在运行。

如何合并集群?

您可以使用该pg_dumpall命令将内容从一个集群复制到另一个集群以生成备份并用于psql将其导入要保留的集群。在开始之前保留所有内容的备份是值得的。

如何删除不再使用的集群?

  • 使用pg_lsclusters以获取有关群集的详细信息,并记下这些集群的数据目录和日志文件。

  • 使用pg_ctlcluster <version> <cluster> stop停止集群。

  • 删除数据文件夹和可选的日志文件。

  • 最后删除数据和配置。数据文件夹应该/var/lib/postgres/data/<version>/<cluster>只是检查输出pg_lsclusters以确保这一点。集群的配置:所有集群都将在
    /etc/postgresql/<version>/<cluser>/.

如果您从不要求它们,为什么会得到多个集群?

通常,您必须专门请求创建一个集群才能获得一个新集群。唯一的例外是当您升级集群时,它将有效地创建一个新集群并保留旧集群。