web-dev-qa-db-ja.com

systemctlでPostgreSQL PGDATA変数を変更する

ファイル/home/postgres/dataを変更する代わりに、postgresのデータディレクトリを/etc/postgresql/10/main/postgresql.confに変更してpostgresql.serviceを編集します。

だから、私はでサービスを編集しました

Sudo systemctl edit postgresql.service

そして、次の行を追加しました:

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

そして、Sudo servicetl restart postgresql.serviceでサービスを再起動します。

ただし、データディレクトリは変更されません。

また、[email protected]を編集してラップトップを再起動しましたが、データディレクトリは変更されませんでした。

Systemctlサービスまたはユニットを使用してpostgresのデータディレクトリを変更するにはどうすればよいですか?

1
toledano

データディレクトリはpostgresql.confファイルで設定する必要があります。

なぜ?

PostgreSQLがUbuntuにパッケージ化される方法、postgresql.serviceは、同時に実行されるPostgreSQLの複数のインスタンスを駆動できるアンブレラサービスです(たとえば、10/main10/main2または9.6/mainがある場合があります)。同じ$ PGDATAを共有できないため、アンブレラサービスのレベルは機能しません。

また、[email protected]などのサービスユニットを介してローカルに定義すると、 pg_lsclusterspg_ctlcluster などのPGインスタンスを管理するコマンドに問題が発生します。これらのインスタンスのデータディレクトリ。現在、これらのコマンドは構成ファイルを解析します。データディレクトリに対してだけでなく、ポート番号やUnixドメインソケットディレクトリなどの他のデータビットに対しても実行します。この部分は postgresql-common パッケージによって提供されます。このパッケージはsystemdからほとんど独立しています(そしてその採用以前に)。

1
Daniel Vérité