web-dev-qa-db-ja.com

Ubuntu 12.04 LTSでPostgresql 9.3のデフォルトのデータおよびログディレクトリを変更して初期化する

Ubuntu 12.04 LTSイメージを使用するAzureでは、Postgres 9.3のデフォルトデータとログファイルのパスを変更し、セカンダリドライブ/mnt/pgdataで初めて初期化しようとしています。 Postgres 9.3がapt-getによるフレッシュインストールだったところから始めました。

Postgresを停止しました:Sudo service postgresql stop

Pg_createclusterを実行しようとしました

以下はヘルプ/マニュアルページを表示するだけです。おそらく、バージョンと名前のパラメーターが欠落しているためです。

pg_createcluster -d /mnt/pgdata/data -l /mnt/pgdata/log --start-conf auto

次の結果は、/mnt/pgdataに何も存在しないにもかかわらず、「エラー:クラスター構成はすでに存在しています」という結果になります。

pg_createcluster 9.3 main -d /mnt/pgdata/data -l /mnt/pgdata/log --start-conf auto

Linuxは一般的にかなり新しいので、具体的に回答してください。

また、次の質問があります。

  1. 直接マウントパスを使用しても問題ありませんか、それともシンボリックリンクを使用した方がよいですか。
  2. Postgres 9.3をデフォルトのポートでこれらのデフォルトのデータディレクトリでセットアップし、サーバーで自動的に起動するために、他に実行または変更する必要があることはありますか?
  3. 他の推奨事項はありますか?
5
thames

このエラーの理由:"Error: cluster configuration already exists"は、最初に作成されるクラスターにmainという名前がすでに割り当てられているためです。

そこにデータがない場合は、次のコマンドでデータを作成する前に削除できます。

pg_dropcluster 9.3 main

これには、新しいクラスターにデフォルト以外の5432ではなくポート番号5433が割り当てられるという望ましい効果もあります。

直接マウントパスとシンボリックリンクのどちらを使用するかは重要ではありませんが、構成ファイルはデータディレクトリの外の/etc/postgresql/<version>/<clustername>/に作成されることに注意してください。

マンページによると、pg_createclusterコマンドはバージョンと名前の前のオプションを想定しているため、コマンドは次のようになります。

pg_createcluster -d /mnt/pgdata/data -l /mnt/pgdata/log --start-conf auto 9.3 main

また、/mnt/pgdataにログファイルがあると、logrotateにアクセスできなくなり、無限に大きくなります。 /etc/logrotate.d/postgresql-commonを見て、/var/log/postgresql/*.logを処理するように構成されている方法を確認できます。

5
Daniel Vérité

私のマシンではこれは次のようにして解決されました:

mkdir /var/run/postgresql
chown postgres:postgres /var/run/postgres
service postgresql restart
0
sorin