你如何阻止 PostgreSQL 在 linux (Ubuntu) 下启动集群

Phi*_*ing 6 postgresql linux ubuntu init

由于首次创建时设置的一些不正确的参数,我需要重新构建一个集群。特别是集群中的每个数据库都设置为LC_COLLATEofen_GB.UTF8并且需要更改为C

我很乐意使用 备份pg_dumpall集群,使用正确的配置参数创建一个新集群,然后将备份恢复到新集群。

为了尽可能降低风险,我希望尽可能保持现有集群不变,以便它可以根据请求启动,但不会在诸如sudo service postgresql start. 很容易有足够的磁盘空间来执行此操作。编辑:要清楚这一点,我想保留旧集群的安装,只是未启动。

我怎样才能将集群留在原地,但不让它与新的(正确配置的)替换一起自动启动?也就是说,如何阻止 PostgreSQL 启动旧集群,即使它启动了新集群?

Phi*_*ing 15

我在谷歌上花了更多的时间,由于对另一个答案的争论,我通读了启动脚本。事实证明这很简单:


禁用旧集群

在每个集群 ( /etc/postgresql/<version>/<cluster>/)的配置文件下都有一个名为start.conf. 这仅包含一个未注释的单词 - auto。通过简单地将其更改为manual启动脚本将完全忽略此集群。

要手动启动集群,您可以使用pg_ctlcluster <version> <name>.


重命名旧/新集群

PostgreSQL 脚本的工作基础是每个集群的 postgresql.conf 文件可以在/etc/postgresql/<version>/<cluster name>/postgresql.conf.

很容易认为您可以简单地重命名此目录以更改集群名称(保持版本名称相同)。其实几乎就是这么简单。

但是 postgresql.conf 引用了一些其他文件,例如 pg_hba.conf。当您重命名目录时,这些也将被移动。因此,在重命名目录后,您还需要更新 postgresql.conf 中的这些引用。

不需要重命名数据目录,但是如果数据目录名称遵循集群的名称,它有助于保持您的理智。同样,如果您重命名它,请记住在 postgresql.conf 中更新它。