我认为我安装了多个 postgresql 服务器,如何识别和删除“多余的”服务器?

我认为我安装了多个 postgresql 服务器,如何识别和删除“多余的”服务器?

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

我有一个 postgresql 目录/etc

一个/usr/lib

一个/opt

我现在真的非常困惑。

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

任何有关我的问题的想法都将非常重要。

答案1

人们对于“安装”的含义可能会产生一些困惑。

  • /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

请仔细查看“状态”列。如果集群未联机,则它只是磁盘上的数据,不执行任何操作。如果集群联机,则它正在运行。

如何合并集群?

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

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

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

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

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

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

如果您从未要求过,为什么您会得到多个集群?

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

答案2

您可以使用 dpkg -S 查看给定目录属于哪个包。这将让您查看目录是否属于不同的包。

相关内容