나는 후속 조치를 취하고 있다이 튜토리얼PostgreSQL 데이터 폴더 위치를 이동하는 방법에 대해 설명합니다. 기본적으로 내부의 파일을 /var/lib/postgresql
다른 위치에 복사하면 됩니다 . 다음과 같습니다.
sudo rsync -av /var/lib/postgresql /mnt/volume
그런 다음 파일에서 /etc/postgresql/9.5/main/postgresql.conf
줄을 변경했습니다 data_directory = '/mnt/volume/postgresql/12/main'
...
이 솔루션은 잘 작동합니다. 유일한 조건은 복사된 폴더에 postgres:postgres
반복적으로 권한이 있어야 한다는 것입니다.
/home/SharedFolder
내 공유 폴더 위치가 있고 가상 머신에 PostgreSQL이 설치되어 있다고 가정하고 호스트와 게스트 사이의 공유 폴더 위치와 함께 VirtualBox를 사용할 때 문제가 시작됩니다 . 이러한 VirtualBox 공유 폴더는 항상 권한이 있는 게스트에 나타나며 이러한 권한은 시간이 지나도 변경 root:vboxsf
되지 않으므로 권한이 있는 이 공유 폴더에 새 폴더를 생성 할 수 없습니다 . 그룹에 추가하려고 시도했지만 ( 알고 있지만 권장하지 않음) 잘 작동하지 않았습니다. 내부의 모든 폴더에 권한이 있는 경우 에만 작동합니다 . 이 문제에 대한 해결책이 있습니까? 대상 폴더(이 경우 VirtualBox 공유 폴더 위치)의 권한을 제어할 수 없는 경우 PostgreSQL 데이터 폴더 위치를 어떻게 변경합니까?chmod
chown
postgres:postgres
postgres
vboxsf
root
/home/SharedFolder/postgres
postgres:postgres
답변1
마침내 공유 폴더를 직접 마운트하여 해결책을 찾았고 /etc/fstab
거기에서 우리가 원하는 권한을 강제로 유지할 수 있었습니다. 기본적으로 호스트 시스템에서 자동 마운트가 활성화되지 않은 폴더를 공유했습니다.
/etc/fstab
그런 다음 게스트 파일에 다음 줄을 추가했습니다.
postgresql /home/path/guest/postgresql/ vboxsf uid=postgres,gid=postgres 0 0
마지막으로 data_directory
내부 변수를 /etc/postgresql/12/main/postgresql.conf
다음과 같이 변경했습니다.
data_directory = '/home/path/guest/postgresql/12/main'
내부 데이터가 원본 postgresql 폴더의 복사본이라면 postgresql
정상적으로 작동합니다.