ファイル/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のデータディレクトリを変更するにはどうすればよいですか?
データディレクトリはpostgresql.conf
ファイルで設定する必要があります。
なぜ?
PostgreSQLがUbuntuにパッケージ化される方法、postgresql.service
は、同時に実行されるPostgreSQLの複数のインスタンスを駆動できるアンブレラサービスです(たとえば、10/main
と10/main2
または9.6/main
がある場合があります)。同じ$ PGDATAを共有できないため、アンブレラサービスのレベルは機能しません。
また、[email protected]
などのサービスユニットを介してローカルに定義すると、 pg_lsclusters
や pg_ctlcluster
などのPGインスタンスを管理するコマンドに問題が発生します。これらのインスタンスのデータディレクトリ。現在、これらのコマンドは構成ファイルを解析します。データディレクトリに対してだけでなく、ポート番号やUnixドメインソケットディレクトリなどの他のデータビットに対しても実行します。この部分は postgresql-common
パッケージによって提供されます。このパッケージはsystemdからほとんど独立しています(そしてその採用以前に)。