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は一般的にかなり新しいので、具体的に回答してください。
また、次の質問があります。
このエラーの理由:"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
を処理するように構成されている方法を確認できます。
私のマシンではこれは次のようにして解決されました:
mkdir /var/run/postgresql
chown postgres:postgres /var/run/postgres
service postgresql restart