如何重命名 PostgreSQL 集群?

Rob*_*ark 8 postgresql maintenance

我用谷歌搜索并找到了这个旧网页,上面写着只是要更改目录的名称。我试过了,但没有用:

$ pg_lsclusters 
Version Cluster   Port Status Owner    Data directory                     Log file
8.4     main      5432 down   postgres /var/lib/postgresql/8.4/main       /var/log/postgresql/postgresql-8.4-main.log
9.1     main      50420 online postgres /var/lib/postgresql/9.1/main       /var/log/postgresql/postgresql-9.1-main.log$ pg_ctlcluster 9.1 main stop

$ pwd
/var/lib/postgresql/9.1

$ ls
main

$ mv main oldmain

$ pg_ctlcluster 9.1 oldmain start
Error: specified cluster does not exist
Run Code Online (Sandbox Code Playgroud)

PostgreSQL 9.1.4,Ubuntu 11.10

Erw*_*ter 10

更新:postgresl-common包的版本 166添加了pg_renamecluster. 请参阅Ilya对此的新回答


在旧版本(包括 Ubuntu 11.10 上的 Postgres 9.1.4)中,集群名称绑定到 Martin Pitt 引入的“多版本/多集群 PostgreSQL 架构”中的数据目录名称。这是随 Debian 软件包(Debian、Ubuntu 和相关发行版)一起提供的。有关架构的详细说明,请参阅:

/usr/share/doc/postgresql-common/README.Debian.gz
Run Code Online (Sandbox Code Playgroud)

或在此处在线浏览文件。

其他安装不具备所有这些功能,因此当您谈论集群名称时,有些人可能会感到困惑。

仅重命名数据目录不起作用,因为您必须相应地更改目录/etc/postgresql/<version>/<cluster>

并且您的 中有几个设置postgresql.conf也必须进行调整。在目录中运行 grep 以查看:

postgres@db:/etc/postgresql/9.1/main$ grep 'main' ./*
Run Code Online (Sandbox Code Playgroud)


Ily*_*lya 7

Debian/Ubuntu 有一个pg_renamecluster命令(在“postgresql-common”包中可用),它可以满足您的需求:

  • 重命名配置和数据目录,
  • 重命名现有的日志文件,
  • 更改了postgresql.conf.

手册页

Systemd 用户注意:生成器用于为每个 PostgreSQL 集群创建单元文件(即服务)。所以在pg_renamecluster你应该重新加载 Systemd 配置之后,启用并启动新服务: sudo systemctl daemon-reload sudo systemctl enable postgresql@<version>-<new cluster name>.service sudo systemctl start postgresql

  • 应该提到的是,[`pg_renamecluster` 仅在 2015 年 2 月与 postgresql-common (166) 一起添加到不稳定版本](http://metadata.ftp-master.debian.org/changelogs/main/p/postgresql-常见/unstable_changelog)。IOW:在 jessie-backports 之前在 Debian 中不可用。那是在提出这个问题多年之后,几乎不适用于 Postgres 9.1(尽管您*可以*在更新的基础架构中运行过时的 pg 9.1 集群)。 (2认同)