我想更改 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/main
和10/main2
或9.6/main
),并且它们不能共享相同的 $PGDATA,因此在伞状服务级别全局定义它不起作用。
此外,通过服务单元在本地定义它[email protected]
会导致管理 PG 实例的命令出现问题,例如pg_lsclusters
或者pg_ctlcluster
,因为不清楚它们如何找到这些实例的数据目录。目前这些命令解析配置文件。它们不仅解析数据目录,还解析其他数据,例如端口号或 Unix 域套接字目录。此部分由postgresql-common
该软件包与 systemd 完全独立(并且早于其采用)。