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