
Postgresが設定ファイルを見つけるために使用するデータディレクトリを変更しようとしています。
Ubuntu 22を新しくアップデートし、Postgresql@15を新しくインストールしました。
Postgres設定ファイルのバージョン管理を維持するために、デフォルト設定を私のserver-configsリポジトリの新しいデータディレクトリにコピーしました/usr/local/apps/server-configs/configs/postgres/postgres_data/
。
Postgresqlはサービスファイルを次のパスにインストールします。/etcではなく/lib):
/lib/systemd/system/postgresql.service
/lib/systemd/system/[email protected]
とを通じて、両方のsudo systemctl edit postgresql
場所に次のサービス環境変数の割り当てを追加しました。sudo systemctl edit [email protected]
[Service]
Environment=
Environment=PGDATA=/usr/local/apps/server-configs/configs/postgres/postgres_data/
(二重Environment
声明が正しくない可能性があります。この問題を解決しながら、以前に存在していたすべてを消去するように設定する必要があることをどこかで読みました。)
これにより、オーバーレイファイルが2つ以上作成されます。
postgresql.service.d/override.conf
[email protected]/override.conf
それから楽しんでデーモンを再ロードし、Postgresを再起動しました。
sudo systemctl daemon-reload
sudo systemctl restart postgresql
最後に、Postgresが新しいデータディレクトリを取得したことを確認するためにデータベースに接続し、以下を介して確認しました。
sudo -iu postgres
psql
postgres@logs:~$ psql
psql (15.2 (Ubuntu 15.2-1.pgdg22.04+1))
Type "help" for help.
postgres=# SHOW config_file;
config_file
-----------------------------------------
/etc/postgresql/15/main/postgresql.conf
(1 row)
私はこれをこの問題を解決する正しい方法で説明する多くの練習を読んでいます。しかし、私が何を試しても、設定ファイルはまだserver-configs
私のリポジトリのバージョンではなくインストールされたバージョンを指します。
私は何を見逃していますか?ありがとうございます!
答え1
同様の問題がありましたが、手動でコンパイルされたバージョンの横にシャドウポストグレスがインストールされていることがわかりました。 Shadow postgresはpostgres-contrib-15を使用してaptを介してインストールされます。以下の私のシステムスクリプトは、実際にはグローバルpostgresql.confを使用してシャドウポストグレスを起動します。
[Unit]
Description=PostgreSQL database server
Documentation=man:postgres(1)
Wants=network-online.target
After=network-online.target
[Service]
Type=notify
User=postgres
Environment=PGDATA=/var/lib/postgresql/data
ExecStart=/usr/lib/postgresql/bin/postgres -D /var/lib/postgresql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=infinity
[Install]
WantedBy=multi-user.target
編集するこの問題を解決するために、単にpostgres-contrib-15を削除しました。sudo apt remove postgres-contrib-15