[pgsql-jp: 41753] Re: pg_ctlの動作の質問

mlus mlus @ 39596.com
2014年 12月 3日 (水) 16:37:20 JST


佐藤 さん ご返答ありがとうございます。

> 環境変数 PGDATA が定義されているだけだと思います。

まさに、ご指摘の通りでした。

私の理解では、postgresql.conf 内の data_directory パラメータに値をセットして
やれば、PGDATA 変数として扱ってくれるものとばかり思っていましたが、
これが間違いでした。

マニュアルでは、
============================
dataディレクトリ以外の場所に設定ファイルを格納したいので
あれば、postgresの-Dコマンドラインオプション、またはPGDATA環境変数で設定ファイルの場所を指し示し、そしてdataディレクトリが実際どこに存在するのかを示すため、postgresql.confの(もしくはコマンドライン上で)data_directoryパラメータを設定しなければなりません。
==========================
とありますので、
-D [クラスタフォルダ位置] 又は、 PGDATA環境変数 のどちらかを pg_ctl
のパラメータとして渡してやらなければならなかったようです。そして、その上でさらに、
postgresql.conf内においてdata_directoryパラメータを設定してやる事にしました。

そこで、systemdのpostgresql.serviceに
Environment="PGDATA=/usr/local/pgsql/data"
追加してやった所、無事起動しました。

的確なご指摘ありがとうございました。感謝!です。 m(_ _)m


起動方法に、postgresを使わずにpg_ctlを使っているのは、マニュアルの”データベースサーバの起動” 節に
===================
こうしたシェル構文は長くなりがちです。 そのため、pg_ctlラッパプログラムが提供されていて、いくつかのタスクを単純化しています。 以下に例を示します。

pg_ctl start -l logfile
===================

とありましたので、これに従って利用することにしました。postgresがバックグラウンド稼動になるようなので、systemdではType=forking
として、pid指定を使っています。


pgsql-jp メーリングリストの案内