VirtualBox를 사용할 때 PostgreSQL 데이터 폴더를 공유 폴더 위치로 변경하는 방법은 무엇입니까?

VirtualBox를 사용할 때 PostgreSQL 데이터 폴더를 공유 폴더 위치로 변경하는 방법은 무엇입니까?

나는 후속 조치를 취하고 있다이 튜토리얼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 데이터 폴더 위치를 어떻게 변경합니까?chmodchownpostgres:postgrespostgresvboxsfroot/home/SharedFolder/postgrespostgres: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정상적으로 작동합니다.

관련 정보