2

Ubuntu で PostgreSQL を使用しようとしています。私はそれをインストールし、すべてが正常に機能していました。ただし、スペースの制約からデータベースの場所を変更する必要があったため、オンライン ガイドを試してみました。

postgresqlを停止し、新しい空のディレクトリを作成し、使用して権限を付与しました

chown postgres:postgres /my/dir/path

それもうまくいきました。それから私は使用しました

initdb -D /my/dir/path

データベースを有効にします。また、ファイル内の path_data をpostgresql.conf新しいディレクトリに変更しました。

データベースを起動しようとすると、次のように表示されますThe postgresql server failed to start, please check the log file。ただし、ログ ファイルはありません。デフォルトのディレクトリを変更すると、何かがおかしくなりました。これを修正するにはどうすればよいですか?

4

1 に答える 1

4

pg_wrapper最初: Ubuntu が: pg_createclusterpg_dropclusterなどの一部として提供するカスタム ツールを使用して、Ubuntu での Pg インストールを管理する方が簡単な場合がありますpg_ctlcluster/etc/postgresql/datadir の PostgreSQL のデフォルト。実際のファイルが保存されている場所に移動するには、シンボリック リンクを使用します (以下を参照)。

問題が発生した場合、どのように PostgreSQL を起動していますか?

経由pg_ctlで起動している場合は、データ ディレクトリの場所を指定する必要があるため、正常に動作するはずです。ただし、ディストリビューション パッケージ スクリプトを使用している場合、データ ディレクトリを移動したことはわかりません。

/etc/postgresqlUbuntu では、おそらくpg_ctl.conf、またはstart.conf適切なバージョンのデータ ディレクトリがどこにあるかをスクリプトに伝えるために、構成を変更する必要があります。私はそれをする必要がなかったので、詳細はわかりません。これが理由です:

ただし、より良い方法があります。古い datadir の場所から新しい場所へのシンボリック リンクを使用します。PostgreSQL とセットアップ スクリプトは喜んでそれに従います。構成を変更する必要はありません。

cd /var/lib/postgresql/9.1/main
mv main main.old
ln -s /new/datadir/location main

Ubuntu のバージョンまたは PostgreSQL のバージョンを指定しなかったため、「9.1」と推測しています。

mount -o bind別の方法は、新しい datadir の場所を古い場所にマップするために使用することです。そのため、何も違いに気づきません。次に、バインド マウントを追加して、/etc/fstab再起動後も持続するようにします。ツールの 1 つがシンボリック リンクのアプローチを好まない場合にのみ、これを行う必要があります。pg_wrapperなどで問題になることはないと思います。

また、手動で initdb を使用したため、新しい datadir の構成は ではなく datadir 内に直接あることにも注意してください/etc/postgresql/

代わりに Ubuntu クラスター管理スクリプトを使用すると、はるかに簡単になります。

于 2012-07-20T02:07:24.270 に答える