使用 systemctl 更改 PostgreSQL PGDATA 变量

使用 systemctl 更改 PostgreSQL PGDATA 变量

我想更改 postgres 的数据目录来/home/postgres/data编辑 postgresql.service,而不是更改文件/etc/postgresql/10/main/postgresql.conf

因此,我使用以下方式编辑了服务

sudo systemctl edit postgresql.service

并添加了以下几行:

[Service]
Environment=PGDATA=/home/postgres/data

并使用 重新启动服务sudo servicetl restart postgresql.service

但数据目录没有改变。

还编辑[email protected]并重新启动我的笔记本电脑,但数据目录没有改变。

如何使用 systemctl 服务或单元更改 postgres 的数据目录?

答案1

postgresql.conf必须在文件中设置数据目录。

为什么?

PostgreSQL 在 Ubuntu 上的打包方式是,它postgresql.service是一个伞状服务,可以驱动多个 PostgreSQL 实例同时运行(例如,您可能有10/main10/main29.6/main),并且它们不能共享相同的 $PGDATA,因此在伞状服务级别全局定义它不起作用。

此外,通过服务单元在本地定义它[email protected]会导致管理 PG 实例的命令出现问题,例如pg_lsclusters或者pg_ctlcluster,因为不清楚它们如何找到这些实例的数据目录。目前这些命令解析配置文件。它们不仅解析数据目录,还解析其他数据,例如端口号或 Unix 域套接字目录。此部分由postgresql-common该软件包与 systemd 完全独立(并且早于其采用)。

相关内容