我似乎在某种程度上在我的机器上安装了一些postgresql。 我不确定这是否是一个错误,或者如果Ubuntu出于某种奇怪的原因重复了进攻并将其保留在别处。 我在/ etc中有一个postgresql目录
一个在/ usr / lib中
和/ opt中的一个
我现在很困惑。 我怎么去删除额外的那个,哪个是额外的? 我还需要确保在我的rails env中的“pg”gem指向正确的posgresql db服务器。
对我的问题的任何想法将是巨大的。
对于灌输的含义,可能会有一些困惑。 /etc/postgresql/文件夹是您的群集的configuration文件夹。 /var/lib/postgresql/文件夹用于数据。 每个版本的程序二进制文件通常位于/usr/lib/postgresql/中的独立文件夹中。 我真的不知道关于/opt/postgresql因为我没有我的。 但是/opt是“可选的”二进制文件,所以可能你的安装在这里而不是/usr/lib/postgresql/ 。
总之,我认为你可能只有一个安装文件在多个位置。
如果你想看看你已经安装了什么,这可能会有所帮助:
如何构buildpostgresql:
为了使事情更清楚postgres的结构如下:
一个版本的字面意思是指哪个版本的postgresql程序二进制文件。 每个安装的版本可能会在该版本下安装一个群集。 如果没有,那么该版本是有效的hibernate,因为它没有数据或运行服务器关联。
在每个版本下,许多集群都有。 您可以将群集视为正在运行的prostgres服务器(进程)。 每个集群都必须有自己的端口/套接字文件供客户端连接。 每个集群将由单个版本进行pipe理。
每个集群内部将有多个数据库。 当客户端连接时,select要连接的数据库。 它可以要求更改连接到哪个数据库而不打开新的会话,但它只能连接到一个。
你有什么安装?
要找出哪些版本安装,你可以看看dpkg和apt 。 您应该能够使用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停止集群。
删除数据文件夹和可选的日志文件。
最后删除数据和configuration。 数据文件夹应该是/var/lib/postgres/data/<version>/<cluster>但检查pg_lsclusters的输出以确保这一点。 群集的configuration:所有群集都将拥有自己的configuration文件夹
/etc/postgresql/<version>/<cluser>/ 。
如果你从来没有要求过,为什么你会得到多个集群呢?
通常你必须特别要求创build一个集群来获得一个新集群。 唯一的例外是当你升级一个集群时,它将有效地创build一个新集群,并保留原来的集群。
您可以使用dpkg -S来查看给定目录属于哪个包。 这可以让你看看目录是否属于不同的包。