kazmax - Linux で自宅サーバー

PostgreSQL 8.1.4 起動と自動起動設定

PostgreSQLの初回起動には、データベースクラスタというものを作成します。

データベースクラスタとは、データベース格納領域の事で、 OS上では、全てのデータが格納される1つのディレクトリとして存在し、 データベースの設定ファイルや、データファイルがその中に含まれます。

初回起動時のみ、このデータベースクラスタを作成します。 簡単にいうとデータ格納用のディレクトリとファイル群を作成するって事です。

Last Update : 2006年12月04日

PostgreSQL 8.1.4 起動と自動起動設定の手順

  1. データベースクラスタの作成
  2. PostgreSQL 起動
  3. PostgreSQL 停止
  4. PostgreSQL 自動起動設定( chkconfig に登録 )

1. データベースクラスタの作成

上にも書きましたが、初回起動時のみデータベースクラスタを作成します。 データベースクラスタを作成するのはコマンドが用意されているので簡単です。

また、このコマンドは、postgres ユーザーで実行します。

コマンドオプション「-D」の後ろにデータ格納用のディレクトリを指定して実行します。 データ格納用のディレクトリは、前回作成した/usr/local/pgsql/data の事です。 ちなみに、ディレクトリは自由です。

違う所に作りたければ、/usr/local/pgsql/data を消して好きなところにディレクトリを作ってあげて下さい。 オーナーとグループを「 postgres 」にするのを忘れないように。

あと、引数に「 --no-locale 」をつけた方がいいです。 つけてないと日本語のソートがおかしくなったりします。

# ls -la /usr/local/pgsql | grep data
drwx------  10 postgres  postgres   4096  9月 17 16:17 data
オーナーとグループが postgres である事を確認する。

データベースクラスタの作成
# su - postgres
# initdb -D /usr/local/pgsql/data --no-locale
↑環境変数を指定していなければ、/usr/local/pgsql/bin/initdb

これで、起動の準備は全て終了です。

2. PostgreSQL 起動

PostgreSQLを起動します。

PostgreSQLの制御用に「pg_ctl」というコマンドが用意されているので、それにオプションを指定し実行するとPostgreSQLが起動します。 また、起動時にログファイルを指定する事ができます。必要であればログファイルを作成しておきます。

ログファイルの作成
# touch /var/log/postgresql.log
# chown postgres:postgres /var/log/postgresql.log

PostgreSQL 起動
# pg_ctl -D /usr/local/pgsql/data -o "-i" -l /var/log/postgresql.log start

オプションの説明です。

オプション詳細
-D データベースクラスタまでのフルパスを指定
-o postmaster に渡す引数を指定します。
ここでは、-iを指定していますが、これは、ネットワーク越しの利用をする場合に使用します。
必須ではありません。
-l (小文字のL) ログファイルまでのフルパスを指定
start 起動

3. PostgreSQL 停止

PostgreSQL の停止方法です。

# pg_ctl stop -D /usr/local/pgsql/data

4. PostgreSQL 自動起動設定( chkconfig に登録 )

OSをリブートした場合、初期状態のままだと PostgreSQL が自動的に起動してきません。 ランレベルに合わせて、PostgreSQL自動起動するように設定します。

chkconfig --lsit とすると、どのランレベルでどのサービスが実行されるのかのリストが表示されます。 これに PostgreSQL を登録していきます。

4-1. シェル作成

# cd /etc/init.d/
# vi pgsql

以下内容

#!/bin/sh
#
# chkconfig: 35 86 15
# description: PostgreSQL

PGACCOUNT="postgres"
PGDATA="/usr/local/pgsql/data"
PGLOG="/var/log/postgresql.log"
PG_CTL="/usr/local/pgsql/bin/pg_ctl"

. /etc/rc.d/init.d/functions

case "$1" in
    start)
        echo -n "Starting postgres: "
        su - $PGACCOUNT -c "$PG_CTL -D \
            $PGDATA -o \"-i\" -l $PGLOG start"
        ;;
    stop)
        echo -n "Stopping postgres: "
        su - $PGACCOUNT -c "$PG_CTL -D $PGDATA stop"
        ;;
    *)
        echo "Usage: $0 {start|stop}"
        exit 1
esac

exit 0

↑ start)の2行下の su - $PGACCOUNT -c ~ $PGLOG start" までは、行末の「 \ 」をとれば1行で書けます。

実行権限を与えます。

# chmod 755 pgsql

4-2. chkconfig に登録

# chkconfig --add pgsql

・確認

# chkconfig --list pgsql
pgsql 0:off 1:off 2:off 3:on 4:off 5:on 6:off ← ランレベル確認。

ランレベル3と5で、pgsql がon になっている事を確認します。
なっているなら、再起動したときに自動的に起動してくるようになります。

PostgreSQL 起動

# service pgsql start
Starting postgres: postmaster starting

PostgreSQL 停止

# service pgsql stop
Stopping postgres: waiting for postmaster to shut down.... done
postmaster stopped
PostgreSQL 関連記事