Debian での PostgreSQL の起動機序
Debian GNU/Linux 5.0「lenny」での PostgreSQL の自働起動(起動他)機序をみる、起動パラメータの与え方とか設定ファイル類の読まれ方なんかを確認するため。
ちなみに Debianインストール時に tasksel選択で「SQLデータベース」を選んでインストールされたのは (PostgreSQL) 8.3.9。
- /etc/rc3.d/S19postgresql-8.3
- ここからだとして、これは次の init.dスクリプト
- /etc/init.d/postgresql-8.3
- INIT情報普通に
- 環境変数について注意書き、ここに書いても無駄、/etc/postgresql/8.3/
/environment へ - /etc/postgresql/8.3/main/environment
- コメントのみ、特に値はない
- /usr/share/postgresql-common/init.d-functions を読む
- 第一引数で case 選択
- start なら「start $VERSION」($VERSION は 8.3)
- start()関数の定義は上記 init.d-functions にある
- /usr/share/postgresql-common/init.d-functions
- start()
- pid用のディレクトリの設定とか
- 「do_ctl_all start "$1" "Starting PostgreSQL $1 database server"」$1は 8.3 だよね
- do_ctl_all()
- $1、$2 あるよね、ここでは $1 は start、$2 はバージョン番号 8.3 で呼んでたよね
- その関係の etcファイルとか postmasterプログラムあるよね
- 「log_daemon_msg "$3"」さっき呼ばれたときの第3引数、スタートするよメッセージ
- /etc/postgresql/"$2"/* をぐるぐる回る、データベースクラスター全部ということ
- 夫々の postgresql.conf を見て
- 夫々の start,coof を見る、「auto」と書いてある
- 「auto」だと自働起動する
- クラスターの名前を log_daemon_msg へ
- stop や restart じゃなければ
- 「ERRMSG=$(pg_ctlcluster "$2" "$name" $1 2>&1)」$2 は 8.3、$name にはクラスターの名前が入ってる、$1 は start だったよね、最後 2>&1 とあるので標準エラーは標準出力にでてくる、そして ERRMSG に入る
- といことで pg_ctlcluster 8.3 main start と起動
- ステータスチェックしたりエラーならエラー出したりして、そしてステータス返して了
- start()
pg_ctlcluster 以降は PostgreSQL一般のことになる。
この起動機序をたどっていると、複数の PostgreSQLクラスターをいっぺんに起動(或いは他の操作)することに心を砕いているように感じる。起動時オプションとかつけるような感じではない、しかし、きちんとクラスター毎に postgresql.conf を読み分けるなどしている(当然ではある)ので、なんか設定あるならそこで(一時的なオプション指定でも)。