我正在尝试在 Ubuntu 20.04 上为 PostgreSQL 设置复制,对于备用节点,我只需安装 PostgreSQL 服务器,而无需运行 initdb。当我设置从主服务器的复制时,将负责在备用服务器上创建集群。
但每当我跑步的时候
sudo apt-get -y install postgresql
调用 initdb 并创建集群。在其他发行版(如 RHEL)中,可以不运行 initdb,而只需使用软件包安装 postgresql 服务器(https://www.postgresql.org/download/linux/redhat/)。
有什么办法可以解决这个问题吗?或者这只是在 ubuntu 上使用 apt-get 安装时的安装方式?
答案1
问:调用 initdb 并创建集群。在其他发行版(如 RHEL)中,可以不运行 initdb,而只安装 postgresql 服务器
有两种方法可以做到这一点:
将以下选项设置为关闭
/etc/postgresql-common/createcluster.conf
:# Create a "main" cluster when a new postgresql-x.y server package is installed create_main_cluster = off
该配置文件是
postgresql-common
包的一部分,必须首先安装包才有机会覆盖此选项(否则,它将作为postgresql-$VERSION
包的依赖项自动安装)。/etc/postgresql/$VERSION
或者在安装包之前创建目录postgresql-$VERSION
。此目录的存在将使安装后脚本跳过创建默认集群。
答案2
基于 Debian 的 Linux 发行版(例如 Ubuntu)将在通过 安装时启动新服务作为安装后脚本的一部分apt
。这一直是默认行为。也就是说,您可以暂时地禁用此功能暂时地创造一份policy-rc.d
文件。
就是这样:
- 打开终端(或通过 SSH 进入机器)
policy-rc.d
在以下位置创建文件/usr/sbin
:
笔记:请务必sudo {editor of choice} /etc/sbin/policy-rc.d
{editor of choice}
用您选择的编辑器进行替换。- 将以下行粘贴到新文件中:
#!/bin/sh exit 101
- 保存文件并退出编辑器
- 安装你的应用程序
完成后,请务必删除该policy-rc.d
文件,否则任何将来的apt install
操作都可能无法成功,例如系统更新。