私はフォローアップをしています。このチュートリアル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
正常に動作します。