PostgreSQL 在安装过程中何时创建新集群?

PostgreSQL 在安装过程中何时创建新集群?

我在服务器上安装了 PostgreSQL 9.5。我删除了所有 postgres 包

sudo apt remove '^postgres'

然后我停止了 systemd postgresql 服务,删除了以下目录:

/var/lib/postgresql/
/var/log/postgresql/
/etc/postgresql/

还删除了postgres用户:

sudo deluser postgres

删除了 systemd 服务(不记得它在哪里了)

之后我尝试安装 PostgreSQL 10,但它没有为版本 10 创建新的集群。

当我尝试从同一源安装 PostgreSQL 10 时(http://apt.postgresql.org/pub/repos/apt/) 在新的服务器上,新的集群就创建了。

据我记得,当我在 PostgreSQL 9.5 旁边安装 PostgreSQL 10(并使用 进行升级pg_upgradecluster)时,创建了新的集群。

那么,在什么情况下安装 PostgreSQL(特别是版本 10)会包括创建新集群?

答案1

Debian/Ubuntu 软件包有一个postinstall步骤,基本上是调用configure_version()/usr/share/postgresql-common/maintscripts-functionspostgresql-common包中)来创建一个新的集群。

此函数所做的测试确定是否应该创建一个新的集群:

if [ ! -d "/etc/postgresql/$VERSION" ] || [ -z "$(ls /etc/postgresql/$VERSION)" ] || \
   [ -z "$(ls /etc/postgresql/$VERSION/*/postgresql.conf 2>/dev/null)" ]; then
    # skip creating the main cluster when this is not the first install, or
    # when explicitly disabled ($create is on/off/"")
    create=$(pg_conftool /etc/postgresql-common/createcluster.conf show -bs create_main_cluster || :)
    if [ -z "$2" ] && [ "$create" != "off" ]; then
        set_system_locale
        pg_createcluster -u postgres $VERSION main ||

因此,如果没有预先存在的/etc/postgresql/10目录,那么不创建集群的下一个原因就是配置/etc/postgresql-common/createcluster.conf拒绝它。

否则,可能是环境具有无效的区域设置,但会出现有关它的警告输出,例如Perl 的区域设置警告会阻止 Postgres 配置

相关内容