PostgreSQL8.1.4のインストール

id:solitary_shell:20060915:1158301668 のLinuxサーバの環境作りの続きです。

次に PostgreSQL のインストールです。現時点(2006/09/18)で最新版の PostgreSQL8.1.4 をインストールします。

$ ./configure
$ make
$ make check
$ sudo make install

次に PostgreSQL 専用のアカウントを作成します。ここでは、postgresというアカウントがそれに相当します。データベースクラスタの作成は、このアカウントにて行います。

$ sudo useradd postgres

次に環境変数の設定を行います。方法はいくつかあるのですが、簡単なのは、~/.bash_profile に以下の6行を追加する方法です。ちなみに以下は、bashの場合ですので、cshなど他のシェルを利用する場合には、記述方法は異なるので注意して下さい。

PATH="$PATH":/usr/local/pgsql/bin
export PGHOME=/usr/local/pgsql
export PGLIB=$PGHOME/lib
export PGDATA=/db/pgsql/data
export MANPATH="$MANPATH":$PGHOME/man
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"

他にも上記の6行を ~/.bashrc_pgsql として新規に作成し、~/.bashrc_pgsql をログイン時に読む込むように .bash_profile に以下の3行を追加する方法もあります。

if [ -f ~/.bashrc_pgsql ]; then
        . ~/.bashrc_pgsql
fi

または、 /etc/profile.d/pgsql.sh として作成するといった方法でもよいです。

$ cat /etc/profile.d/pgsql.sh
PATH="$PATH":/usr/local/pgsql/bin
export PGHOME=/usr/local/pgsql
export PGLIB=$PGHOME/lib
export PGDATA=/db/pgsql/data
export MANPATH="$MANPATH":$PGHOME/man
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"
$ sudo chmod 755 /etc/profile.d/pgsql.sh

ただし、以下のサイトに書かれている内容を理解した上で使って下さい。思わぬ副作用を引き起こす可能性があります。

データベースクラスタの作成の前に事前にディレクトリを作成しておきます。最終的には、pgpool-IIの動作検証を1台のマシン上で行いたいと考えているので、別ポートでpostmasterを2つ動かす予定なので、以下のような形にしました。

$ sudo mkdir -p /db/pgsql_1/data
$ sudo mkdir -p /db/pgsql_2/data
$ sudo chown -R postgres:postgres /db/pgsql_1 /db/pgsql_2

データベースクラスタを実際に作成します。必ずpostgresアカウントにて実行して下さい。エンコーディングはUTF−8にしてあります。また必ず OSが持つロケートデータベースを利用しない --no-locale オプションを付けます。これを付けないと日本語のソート順などで問題が発生しますので注意して下さい。

$ su - postgres
$ initdb -D /db/pgsql_1/data/ -E UTF-8 --no-locale
$ initdb -D /db/pgsql_2/data/ -E UTF-8 --no-locale

その後、自動起動するように設定します。起動スクリプトLinuxであれば、ソース内に用意されているので、そのまま利用します。

  1. contrib/start-scripts/linux を /etc/rc.d/init.d/ にコピーする
  2. 自動起動の設定追加
$ sudo cp ~/src/postgresql/postgresql-8.1.4/contrib/start-scripts/linux /etc/rc.d/init.d/postgresql_1
$ sudo cp ~/src/postgresql/postgresql-8.1.4/contrib/start-scripts/linux /etc/rc.d/init.d/postgresql_2

それぞれ別ポートで postmaster を起動させ、かつデータベースクラスタディレクトリを指定するので、その部分を変更しておきます。

$ diff -b /etc/rc.d/init.d/postgresql_1 linux 
4c4
< # description: PostgreSQL RDBMS 1
---
> # description: PostgreSQL RDBMS
35c35
< PGDATA="/db/pgsql_1/data"
---
> PGDATA="/usr/local/pgsql/data"
74c74
<       su - $PGUSER -c "$DAEMON -p 5433 -D '$PGDATA' &" >>$PGLOG 2>&1
---
>       su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1
85c85
<       su - $PGUSER -c "$DAEMON -p 5433-D '$PGDATA' &" >>$PGLOG 2>&1
---
>       su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1
$ diff -b /etc/rc.d/init.d/postgresql_2 linux 
4c4
< # description: PostgreSQL RDBMS 2
---
> # description: PostgreSQL RDBMS
35c35
< PGDATA="/db/pgsql_2/data"
---
> PGDATA="/usr/local/pgsql/data"
74c74
<       su - $PGUSER -c "$DAEMON -p 5434 -D '$PGDATA' &" >>$PGLOG 2>&1
---
>       su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1
85c85
<       su - $PGUSER -c "$DAEMON -p 5434 -D '$PGDATA' &" >>$PGLOG 2>&1
---
>       su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1

最後に自動起動を有効にします。

$ sudo /sbin/chkconfig --add postgresql_1
$ sudo /sbin/chkconfig --add postgresql_2

その後、最低でも以下について設定を行う必要がありますが、これは後で書きます。

参考情報

PostgreSQLのドキュメントは各バージョンごとに翻訳されており、非常に便利でお世話になっています。これも 日本PostgreSQLユーザー会: 文書・書籍関連分科会 の方々のおかげです。ありがとうございます。