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

由于第一次创build时设置了一些不正确的参数,我需要重新构build群集。 特别是集群中的每个数据库都被设置为en_GB.UTF8 LC_COLLATE ,并且需要将其更改为C

我很熟悉用pg_dumpall备份集群,用正确的configuration参数创build一个新的集群,然后将备份恢复到新集群。

为了尽可能降低风险,我想尽可能保持现有集群不变,以便可以根据请求启动,但不会自动启动,例如sudo service postgresql start 。 有足够的磁盘空间来做到这一点。 编辑:为了清楚这一点,我想离开旧的群集安装,只是没有启动。

我如何离开集群,但是没有自动与新的(正确configuration的)更换一起启动? 也就是说,即使启动新集群,我如何阻止PostgreSQL启动旧集群?

我花了一些时间在谷歌上,并作为另一个答案的理由,读通过启动脚本。 结果很简单:


禁用旧的群集

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

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


重新命名旧的/新的集群

PostgreSQL脚本的工作原理是,可以在/etc/postgresql/<version>/<cluster name>/postgresql.conffind每个群集的postgresql.conf文件。

很容易想到你可以简单地重命名这个目录来改变集群名称(保持版本名称相同)。 其实这几乎就是这么简单。

不过postgresql.conf引用了其他一些文件,如pg_hba.conf。 当您重命名目录时,这些也将被移动。 所以重命名目录后,你还需要在postgresql.conf中更新这些引用。

不需要重命名数据目录,但是如果数据目录名称遵循集群的名称,则有助于维护您的完整性。 同样如果你重命名这个,记得在postgresql.conf中更新它。