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

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

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

我习惯使用 备份集群pg_dumpall,用正确的配置参数创建新集群,然后将备份恢复到新集群。

为了将风险降到最低,我希望尽可能保持现有集群不变,以便可以根据请求启动它,但不会在调用时自动启动,例如sudo service postgresql start。磁盘空间很容易就足够了。编辑:为了清楚起见,我希望保留旧集群,只是不启动。

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

答案1

我在 Google 上花了更多时间,并因为另一个答案的争论而通读了创业脚本。结果发现这很简单:


禁用旧集群

在每个集群的配置文件 ( /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 中更新它。

相关内容